2015-01-25 13 views
8

UIKeyboard uzunluğunu UIKeyboardFrameEndUserInfoKey'den klavyeWillShow ve keyboardDidShow bildirimlerinin ilk yanıtlayıcı olduğunda tetiklendiğini biliyorum.iOS iPhone - UIKeyboard yüksekliğinden ÖNCE klavyeWillShow

HOWEVER, Bir klavyenin beklenen yüksekliğini bu olaylardan önce bilmek istiyorum; böylece bir görünüm denetleyicisinin viewDidLoad öğesinde belirli tasarım öğelerini ayarlayabilirim.

Aygıtlar değiştiğinden ve yeni yazım düzeltme çubuğu klavye yüksekliğini değiştirdiğinden, yüksekliği kodlamak istemiyorum.

Klavyeden beklenen yüksekliği nasıl alacağını bilerek otomatik düzeltme yapıp yapmadığını, vb.

+0

tam olarak ne bunun için ihtiyacınız var? Spesifik olun çünkü neredeyse kesinlikle farklı bir yaklaşım almak istersiniz. – Wain

+0

Sorumluluğun, "Bu olaylardan önce klavyenin beklenen yüksekliğini bilmek istiyorum; bu nedenle, bir görünüm denetleyicisinin viewDidLoad öğesinde belirli tasarım öğelerini ayarlayabilirim" ifadesini not edin. Bunu genişletmek için: Klavyenin yüksekliğine bağlı olarak düzenlenmiş, ancak yükseltilmesine yanıt vermeyen öğelere sahibim. – Zigglzworth

+2

Önceden bilinemezsin. Klavye yüksekliği, her metin alanı veya ekrandaki metin görünümü için farklı olabilir. Bir "inputAccessoryView" ve diğeri olmayabilir. – rmaddy

cevap

0
Aşağıdaki arada yapabilirsiniz

:

- (void)viewDidLoad { 
[super viewDidLoad]; 
[self initializeTextView]; 

} - (void) initializeTextView {

// Listen for keyboard appearances and disappearances 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardDidShow:) 
              name:UIKeyboardDidShowNotification 
              object:nil]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardDidHide:) 
              name:UIKeyboardDidHideNotification 
              object:nil]; 

myColoredTextview = [[UITextView alloc]initWithFrame:CGRectMake(0, 20, 300, 100)]; 
myColoredTextview.delegate = self; 
[self.view addSubview:myColoredTextview]; 
myColoredTextview.backgroundColor = [UIColor lightGrayColor]; 
} 

- (void)keyboardDidShow: (NSNotification *) notif{ 
// Do something here 
NSLog(@"show:%@",notif); 
NSDictionary *userInfo = [notif valueForKey:@"userInfo"]; 
CGRect kbFrame = [[userInfo objectForKey:@"UIKeyboardFrameBeginUserInfoKey"] CGRectValue]; 
NSLog(@"keboardHeight:%f",kbFrame.size.height); 

}

- (void)keyboardDidHide: (NSNotification *) notif{ 
// Do something here 
NSLog(@"hide:%@",notif); 

}

İlgili konular