私はキーボードの外観イベントの通知を設定しました。では、UITextViewとUITextFieldについて考えてみましょう。UITextFieldとKeyboard Notifications - strange order
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
セレクタは:UITextView、デリゲート方法- (void)textViewDidBeginEditing:(UITextView *)textView
の場合
- (void)keyboardWillShow:(NSNotification *)notification {
keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
}
は AFTER keyboardWillShow:
方法発射されます。だからkeyboardSizeはキーボードの実際のサイズを持っており、私はそれをtextviewデリゲートメソッドの中で使うことができます。 UITextFieldの、対応するデリゲート方法- (void)textFieldDidBeginEditing:(UITextField *)textField
の場合しかし
は BEFORE keyboardWillShow:
方法発射されます。
これはなぜですか?キーボードのCGSize
をテキストフィールドの場合は、テキストフィールドデリゲートが最初に呼び出され、キーボードセレクタは呼び出されないので、ゼロを返すようにするにはどうすればよいですか。
私の場合、単純なdispatch_async(mainQueue、^ {})は役に立ちました。 – Andy