keyboardWillShow调用了两次

时间:2011-11-10 16:04:12

标签: iphone ios notifications nsnotifications uiresponder

我有一个键盘通知视图,例如keyboardWillShowkeyboardWillHide

我使用的通知处理的所有代码都来自Apple的示例代码"KeyboardAccessory"

当我第一次进入此视图时,一切正常。

但是当我从子视图返回此视图时,每次我点按一个按钮说:

[myTextField becomeFirstResponder];

keyboardWillShowkeyboardWillHide方法每次都会被调用两次。

真的很混乱,

有人可以帮我这个吗?

真的很感激!

4 个答案:

答案 0 :(得分:12)

您可能想发布您的代码。

如果您的方法被调用两次,很可能是您多次注册键盘通知而不是在您认为自己时删除观察者。

在viewWillAppear中添加你的观察者:并在viewWillDisappear中删除它:看看会发生什么。

答案 1 :(得分:8)

当显示自定义键盘(如SwiftKey)时,它会在iOS 8上被调用两次。

在第一个电话中,它可能准备显示,因此CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;键盘高度为0

第二个调用将具有正确的键盘高度,因此如果您需要调整内容插入,您可以检查返回的键盘高度是否>在计算你的插图之前是0。

此外,只要用户更换键盘,就会调用它。

答案 2 :(得分:3)

对我来说,更改inputAccessoryView会触发另一个keyboardWillShow来电,因为输入附件视图的高度会影响整体键盘高度。

答案 3 :(得分:0)

我的问题通过 Clean Build Folder ... 解决了,问题并不明显。

转到产品,按键盘上的 ALT 并选择清理构建文件夹...