在开发我的iPad应用程序的最新功能期间,我意识到新的iOS5键盘对接/拆分行为导致了巨大的问题。我使用inputAccessoryView作为键盘,其上有一个文本字段,类似于Safari的页面搜索功能。我在可滚动的UIWebView上显示键盘,所以我的麻烦部分来自于键盘停靠时缩小的UIWebview,并且在取消停靠时具有(大部分)全屏webview。
我遇到的主要问题是,新的UIKeyboardWillChangeFrameNotification和UIKeyboardDidChangeFrameNotification通知最多只是从之前的API退一步,而且垃圾数据几乎无法理解键盘在做什么很多情况。
如果不仔细检查通知中返回的开始/结束帧,是否可以识别以下任何键盘行为?
我想出了一些抽象来识别停靠或屏幕外的帧,但即便如此,我的代码变得非常难以管理。如果您找到了更好的方法,请回答或评论。我希望我在这里遗漏一些东西。感谢。
答案 0 :(得分:4)
事情不是要过度思考这一点。没有任何重要性发生了变化。如果键盘进入屏幕底部的停靠位置,您将收到“显示”通知。如果它离开屏幕底部的停靠位置,您将收到“隐藏”通知。这正是iOS 5之前发生的事情。
唯一的区别是,由于移动到屏幕外而不是离开停靠位置,因此可能会离开停靠位置,因为用户将其取消停靠。您仍然会“隐藏”,因此您可以将界面移回其基本位置。您不需要知道键盘现在是未对接的(尽管如果您真的想要,可以发现它不是UIKeyboardDidChangeFrameNotification的屏幕外)。您不需要知道的原因是当键盘未对接/拆分时,用户可以主动并移动键盘,如果它与需要看到的东西一样。
因此,iOS 5之前的所有旧代码都能继续正常工作。这一切都非常聪明......