我的ViewController中有以下观察者。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
此视图控制器也符合UITextFieldDelegate和UITextViewDelegate,并实现textFieldDidBeginEditing
和textViewDidBeginEditing
。
现在,这是一个奇怪的部分。
如果您点按 UITextField ,则通话顺序为textFieldDidBeginEditing
,然后是keyboardWillChangeFrame:
。
如果您点按 UITextView ,则通话顺序为keyboardWillChangeFrame
然后' textViewDidBeginEditing'。
任何人都没有看到这个问题?不管是字段还是视图,都不应该首先调用text_Dd -BeginEditing。这是为什么?
导致奇怪的动画问题。我需要它以某种方式保持一致。
答案 0 :(得分:0)
我相信您可以使用UIKeyboardWillShowNotification,以及类似上述代码的内容:
- (void)keyboardWillShowNotification:(NSNotification*)notification {
NSDictionary *info = notification.userInfo;
CGRect r = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue];
r = [self.view convertRect:r fromView:nil];
UIViewAnimationCurve curve = [info[UIKeyboardAnimationCurveUserInfoKey] integerValue];
double duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve:curve];
[UIView setAnimationDuration:duration];
/* view changes */
[UIView commitAnimations];
}
答案 1 :(得分:0)
使用UIKeyboardDidChangeFrameNotification而不是UIKeyboardWillChangeFrameNotification。