我有一个键盘通知视图,例如keyboardWillShow
和keyboardWillHide
我使用的通知处理的所有代码都来自Apple的示例代码"KeyboardAccessory"
当我第一次进入此视图时,一切正常。
但是当我从子视图返回此视图时,每次我点按一个按钮说:
[myTextField becomeFirstResponder];
keyboardWillShow
和keyboardWillHide
方法每次都会被调用两次。
真的很混乱,
有人可以帮我这个吗?
真的很感激!
答案 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 并选择清理构建文件夹...