keyboardWillShow IOS8与UIKeyboardWillShowNotification

我在IOS 7和IOS 8设备上运行相同的代码,并得到不同的结果

给定一个包含两个文本字段的屏幕

在IOS 7中,如果我触摸第一个字段keyboardWillShow被调用,但如果我触摸第二个字段,当键盘已经显示它不会被第二次调用。

在IOS 8 keyboardWillShow被调用两次

这是logging的行为?

原因是键盘上的差异。 如果第二个字段是密码字段,这意味着引擎盖下还有另一个键盘。 因此通知被发送两次。

最好的是听取keyboardWillChangeFrameNotification

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrameNotification:) name:UIKeyboardWillChangeFrameNotification object:nil];