有人找到了使用新的iOS5键盘事件的好方法吗?

有人找到了使用新的iOS5键盘事件的好方法吗?,ios,ipad,ios5,uikeyboard,Ios,Ipad,Ios5,Uikeyboard,在为我的iPad应用程序开发一项最新功能的过程中,我意识到新的iOS5键盘对接/拆分行为造成了巨大的问题。我在键盘上使用了一个inputAccessoryView,上面有一个文本字段,类似于Safari的页面查找功能。我在一个可滚动的UIWebView上显示键盘,所以我的部分问题来自于键盘对接时的UIWebView缩小,以及键盘解锁时的(大部分)全屏webview 我在使用API时遇到的主要问题是,新的UIKeyboardWillChangeFrameNotification和UIKeyboar

在为我的iPad应用程序开发一项最新功能的过程中,我意识到新的iOS5键盘对接/拆分行为造成了巨大的问题。我在键盘上使用了一个inputAccessoryView,上面有一个文本字段,类似于Safari的页面查找功能。我在一个可滚动的UIWebView上显示键盘,所以我的部分问题来自于键盘对接时的UIWebView缩小,以及键盘解锁时的(大部分)全屏webview

我在使用API时遇到的主要问题是,新的UIKeyboardWillChangeFrameNotification和UIKeyboardDidChangeFrameNotification通知充其量只是前一个API的一步,并且包含垃圾数据,这使得在许多情况下几乎不可能理解键盘真正在做什么

在不费力检查通知返回的开始/结束帧的情况下,是否可以识别以下任何键盘行为

  • 键盘松开
  • 键盘坞
  • 键盘拆分/取消拆分
  • 未固定键盘显示
  • 未固定键盘隐藏
  • 当键盘松开时,视图旋转

我提出了一些抽象概念来识别停靠或屏幕外的帧,但即使这样,我的代码也变得非常难以管理。如果你找到了更好的方法,请回答或评论。我希望我错过了一些东西。谢谢。

问题是不要想得太多。没有任何重要的变化。如果键盘进入屏幕底部的固定位置,您将收到“显示”通知。如果它离开屏幕底部的停靠位置,您将收到“隐藏”通知。这正是iOS 5之前发生的事情

唯一的区别是,它不是因为移动到屏幕外而离开停靠位置,而是因为用户解除了停靠位置而离开停靠位置。您仍然会得到一个“隐藏”,因此您可以将界面移回其基本位置。您不需要知道键盘现在已解锁(但如果您确实想,您可以从UIKeyboardDidChangeFrameNotification中发现它不是屏幕外的)。您不需要知道的原因是,当键盘松开/拆分时,用户可以主动移动键盘,如果它妨碍了需要查看的内容


因此,iOS5之前的所有旧代码都可以正常工作。这真的很聪明…

这就是我在这里问的问题:(虽然你的问题更好)如果我不想让我的界面做任何不同的事情,那么是的,代码仍然可以工作,不变。正如我在问题的开头所说,我是通过键盘的附件视图来完成这项工作的。这种附属视图,至少在试图模仿Safari的行为时,不会回到屏幕底部或消失;它沿着键盘在屏幕上移动。在许多情况下,使用现有代码无法实现这一点,并且在许多情况下,会出现响应程序问题。当我拆分键盘时,会同时显示和隐藏。为什么会这样?