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



在为我的iPad应用开发最近的一个功能时,我意识到新的iOS5键盘连接/分割行为会导致巨大的问题。我为键盘使用了一个带有文本字段的inputAccessoryView,类似于Safari的页面查找功能。我在一个可滚动的UIWebView上显示键盘,所以我的部分麻烦来自于当键盘停靠时有一个缩小的UIWebView,当它不停靠时有一个(大部分)全屏的webview。

我在API中遇到的主要问题是,新的uikeyboardwillchangeframeotification和uikeyboarddidchangeframeotification通知最多是从以前的API后退一步,并且有垃圾数据,使得几乎不可能理解键盘在许多情况下真正在做什么。

如果不仔细检查通知返回的开始/结束帧,是否可以识别以下任何键盘行为?

  • 键盘出坞
  • 键盘码头
  • 键盘分裂/不可分割的
  • 未连接的键盘显示
  • 未停靠的键盘隐藏
  • 当键盘未停靠时,视图旋转

我已经提出了一些抽象来识别停靠或离屏幕的帧,但即使这样,我的代码也变得非常难以管理。如果你找到了更好的方法,请回答或评论。我希望我遗漏了什么。谢谢。

不要想太多。任何重要的事情都没有改变。如果键盘进入屏幕底部的停靠位置,您将收到"显示"通知。如果它离开了屏幕底部的停靠位置,你会收到一个"隐藏"通知。这正是iOS 5之前的情况。

唯一的区别是,不是因为它移动到屏幕外而离开停靠位置,而是因为用户解除了停靠位置。你仍然会得到一个"隐藏",所以你可以把你的界面移回它的基本位置。你不需要知道键盘现在是未停靠的(尽管你可以从uikeyboarddidchangeframeotification中发现它不是离屏的,如果你真的想的话)。你不需要知道的原因是,当键盘被断开/分开时,用户可以主动移动键盘,如果它挡住了需要看到的东西。

因此,所有iOS 5之前的旧代码都可以正常工作。

最新更新