【发布时间】:2012-05-31 17:38:14
【问题描述】:
我正在创建一个类似于 iPad 的 iMessage 应用程序的应用程序,它可以发送消息。因此,当显示键盘时,消息视图和输入附件视图的底部有一个输入视图。此外,当键盘在停靠或取消停靠时显示时,消息视图必须正确调整大小。
我遇到的问题是UIKeyboardWillChangeFrameNotification进来的通知数据不一致。
首先,用户可以通过 3 种方式取消键盘:
- 按住右下键,然后向上滑动
- 长按右下键,在弹出菜单时选择“取消停靠”
- 长按右下键,弹出菜单时选择“拆分”
对于案例#1,来自 UIKeyboardWillChangeFrameNotification 的通知数据是一致的。这是数据:
userInfo = {
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
}
对于案例 #2 和 #3,数据不一致,这是我收到的:
userInfo = {
UIKeyboardAnimationCurveUserInfoKey = 0;
UIKeyboardAnimationDurationUserInfoKey = "0.25";
UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
UIKeyboardCenterBeginUserInfoKey = "NSPoint: {384, 872}";
UIKeyboardCenterEndUserInfoKey = "NSPoint: {384, 1136}";
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
UIKeyboardFrameChangedByUserInteraction = 0;
UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, -264}, {768, 304}}";
}
这里奇怪的是,当我在案例 #2 或 #3 下侦听 UIKeyboardDidChangeFrameNotification 时,数据按预期进入:
userInfo = {
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
}
为什么通知数据不同?有没有人找到一种明确的方法来检测拆分键盘事件?
【问题讨论】:
标签: objective-c ipad keyboard-events