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

Tah*_*ine 25 uikeyboard ipad ios ios5

在开发我的iPad应用程序的最新功能期间,我意识到新的iOS5键盘对接/拆分行为导致了巨大的问题.我使用inputAccessoryView作为键盘,其上有一个文本字段,类似于Safari的页面搜索功能.我在可滚动的UIWebView上显示键盘,所以我的麻烦部分来自于键盘停靠时缩小的UIWebview,并且在取消停靠时具有(大部分)全屏webview.

我遇到的主要问题是新的UIKeyboardWillChangeFrameNotification和UIKeyboardDidChangeFrameNotification通知最多只是从之前的API退一步,而且垃圾数据几乎无法理解键盘在很多情况下的确在做什么.

是否可以识别以下任何键盘行为而无需仔细检查通知中返回的开始/结束帧?

  • 键盘Undocks
  • 键盘码头
  • 键盘拆分/非拆分
  • 未锁定的键盘显示
  • Undocked键盘隐藏
  • 键盘未对接时视图旋转

我想出了一些抽象来识别停靠或屏幕外的帧,但即便如此,我的代码变得非常难以管理.如果您找到了更好的方法,请回答或评论.我希望我在这里遗漏一些东西.谢谢.

mat*_*att 5

问题是不要过度考虑这一点。任何重要的事情都没有改变。如果键盘进入屏幕底部的停靠位置,您将收到“显示”通知。如果它离开屏幕底部的停靠位置,您将收到“隐藏”通知。这正是 iOS 5 之前发生的事情。

唯一的区别是,它不是因为它移出屏幕而离开停靠位置,而是因为用户取消停靠而离开停靠位置。您仍然会得到“隐藏”,因此您可以将界面移回其基本位置。您不需要知道键盘现在已断开连接(尽管您可以通过 UIKeyboardDidChangeFrameNotification 发现它不在屏幕外,如果您真的想要的话)。您不需要知道的原因是,当键盘脱离/拆分时,如果键盘挡住了需要看到的东西,用户可以主动移动键盘。

因此,您在 iOS 5 之前的所有旧代码都可以继续正常工作。这一切真的很聪明......

  • 如果我不想让我的界面做任何不同的事情,那么是的,代码仍然可以工作,不变。正如我在问题开头所说的那样,我是通过键盘的附件视图来执行此操作的。这个附属视图,至少在试图模仿 Safari 的行为时,不会返回到屏幕底部或消失;它跟随键盘向上移动屏幕。在许多情况下,使用现有代码无法实现这一点,并且在许多情况下,会出现响应者问题。 (2认同)