10

keyboardWillShow我对键盘通知有一个看法,例如keyboardWillHide

我使用的通知的所有代码句柄均取自 Apple 的示例代码“KeyboardAccessory”

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

但是当我从它的子视图返回到这个视图时,每次我点击一个按钮,上面写着:

[myTextField becomeFirstResponder];

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

真的很迷茫

谁能帮我解决这个问题?

万分感激!

4

3 回答 3

13

您可能想发布您的代码。

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

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

于 2011-11-10T20:44:53.353 回答
9

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

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

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

此外,每当用户更改键盘时都会调用它。

于 2014-12-27T08:31:43.270 回答
8

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

于 2016-06-10T15:39:41.287 回答