所以我爲鍵盤外觀事件設置了一個通知。現在讓我們考慮一個UITextView和一個UITextField。UITextField和鍵盤通知 - 奇怪的順序
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
選擇器是:
- (void)keyboardWillShow:(NSNotification *)notification {
keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
}
在一個UITextView的情況下,所述委託方法- (void)textViewDidBeginEditing:(UITextView *)textView
燒製AFTER的keyboardWillShow:
方法。所以keyboardSize具有鍵盤的實際尺寸,我可以在textview委託方法中使用它。
但是在UITextField的情況下,相應的委託方法- (void)textFieldDidBeginEditing:(UITextField *)textField
被觸發之前keyboardWillShow:
方法。
這是爲什麼呢?如何在文本框的情況下獲取鍵盤的CGSize
,因爲它現在只返回零,因爲文本字段委託首先被調用,而不是鍵盤選擇器。
在我的情況簡單dispatch_async(mainQueue,^ {})幫助。 – Andy