【发布时间】:2013-07-22 13:39:19
【问题描述】:
我需要一种方法来检测用户手动关闭 iOS 键盘的情况,使用键盘上的“键盘”按钮。我尝试使用UIKeyboardDidHideNotification,但很快发现当用户拆分键盘并将其留在屏幕上时也会触发此事件。
有没有办法确定键盘真的被隐藏了?
【问题讨论】:
标签: ios ipad uikeyboard
我需要一种方法来检测用户手动关闭 iOS 键盘的情况,使用键盘上的“键盘”按钮。我尝试使用UIKeyboardDidHideNotification,但很快发现当用户拆分键盘并将其留在屏幕上时也会触发此事件。
有没有办法确定键盘真的被隐藏了?
【问题讨论】:
标签: ios ipad uikeyboard
为了获得解决方案,我不得不稍微修改我的原始实现:我已经将 nil 分配给我的主视图的 inputView 成员替换为创建和销毁自定义不可见 UIView<UIKeyInput> 视图以相应地显示和隐藏键盘。这使我可以覆盖此视图的 resignFirstResponder 方法,该方法总是在键盘辞职时调用 - 无论是在正常状态还是在拆分状态下,当用户使用特殊按钮关闭键盘或我以编程方式将其删除时。 p>
【讨论】:
我相信UIKeyboardDidHideNotification 只有在键盘真正消失时才会发送。来自Apple docs:
关闭键盘后立即发布。
但是,您也可以查看当前是否有任何输入是第一响应者:
BOOL keyboardUp = NO;
for (UIView *view in self.textInputs)
{
if (view.isFirstResponder)
{
keyboardUp = YES;
break;
}
}
【讨论】:
UIKeyboardDidHideNotification 在 iPad 上拆分键盘时也会触发,尽管文档没有提及这一点。
UIKeyboardDidHideNotification 在键盘关闭时永远不会被触发。
UIView 实现 UIKeyInput 协议,该协议始终是第一响应者。为了显示和隐藏键盘,我用nil 修改inputView 成员或相应地自定义不可见视图。