iOS 5中未连接的键盘不会触发UIKeyboardWillShowNotification通知

13
我发现在iOS 5中,当出现非停靠/分离键盘时,UIKeyboardWillShowNotificationUIKeyboardDidShowNotification不会被触发。例如,点击文本字段以显示键盘(通知被触发),然后将键盘拖出,再次点击文本字段以关闭键盘,再次点击文本字段以显示未停靠的键盘时,(通知没有被触发)。
是否有任何方法可以检测键盘的出现,而不管它是否停靠?

你找到任何解决方案了吗?我正在遇到完全相同的问题,使用iOS 5并且键盘未停靠时,UIKeyboardDidShowNotification未被传递。 - Tushar
2
如果我找到了解决方案,我会在这里发布。 - titaniumdecoy
类似的问题在这里:https://dev59.com/Cmsz5IYBdhLWcg3wHUW0 - titaniumdecoy
1
是的,当键盘未连接时,那些通知不会被发布,因为用户可以重新定位键盘,通常您不需要处理键盘后面的视图,这与覆盖屏幕底部的连接键盘情况不同,用户无法访问例如表视图中的单元格或按钮等底部的内容。 - holex
2个回答

10

你需要观察 UIKeyboardWillChangeFrameNotificationUIKeyboardDidChangeFrameNotification。当你接收到它们时,你可以查看 UIKeyboardFrameEndUserInfoKey 的值(如果存在的话,在拖动键盘时并不总是存在)并检查该矩形是否与窗口相交,以确定键盘现在是打开还是关闭状态。


4

如果键盘出现未停靠/分离状态,您不需要进行检测。未停靠/分离键盘的整个意义在于,用户可以自由移动它,以防止妨碍。


13
如果我不想检测这个事件,我也不会提出这个问题。请显而易见。 - titaniumdecoy
4
是的 - 我只是试图逆向思考苹果公司的想法。他们所做的是保留“显示”和“隐藏”通知在键盘停靠位置方面的行为。因此,如果键盘未停靠,用户可以移动它,因此您可以继续使用旧代码。或者,您可以切换到UIKeyboardDidChangeFrameNotification(或只是将其添加到通知库中)。 - matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接