2013-07-22 82 views
2

我需要一种方法来检测用户手动解除iOS键盘使用键盘上的“键盘”按钮时的情况。我试图使用UIKeyboardDidHideNotification,但很快发现,当用户拆分键盘时,该事件也会被触发,并将其留在屏幕上。
有没有办法确定键盘确实隐藏?有没有办法知道iOS键盘真的被隐藏(被用户解雇)?

回答

1

要获得解决办法,我只好稍微修改我原来的执行:我把它换成分配nilinputView我的主视图的成员与创建和销毁自定义隐形UIView<UIKeyInput>视图相应地显示和隐藏键盘。这使我可以覆盖此视图的resignFirstResponder方法,它是总是调用键盘辞职 - 无论是在正常状态还是在拆分状态,当用户使用特殊按钮解除键盘锁定或当我以编程方式删除键盘时。

0

我相信UIKeyboardDidHideNotification只有当键盘真正消失时才会发送。来自Apple docs

解除键盘后立即发布。

但是,你也可以看看,如果你的任何输入是当前的第一响应者:

BOOL keyboardUp = NO; 

for (UIView *view in self.textInputs) 
{ 
    if (view.isFirstResponder) 
    { 
    keyboardUp = YES; 
    break; 
    } 
} 
+1

当在iPad上分离键盘时'UIKeyboardDidHideNotification'也被触发,尽管文档没有提及这一点。 –

+0

并且万一键盘已经分裂,当键盘被解散时,永远不会触发'UIKeyboardDidHideNotification'。 – leo

+0

对于键盘交互,我使用自定义的'UIView'实现总是第一响应者的'UIKeyInput'协议。为了显示和隐藏键盘,我相应地用'nil'或自定义不可见视图修改'inputView'成员。 – leo