我正在开发一款与iPad的iMessage应用程序类似的应用程序,用于消息传递。因此,在显示键盘时,消息视图底部有一个输入视图和输入附件视图。而且当键盘停靠或未停靠时,必须正确地调整消息视图的大小。
我的问题是来自UIKeyboardWillChangeFrameNotification的通知数据不一致。
首先,用户可以通过以下3种方式取消停靠键盘:
1. 按住右下角键,然后向上滑动 2. 按住右下角键,当菜单弹出时,选择“取消停靠” 3. 按住右下角键,当菜单弹出时,选择“拆分”
对于情况#1,UIKeyboardWillChangeFrameNotification中的通知数据是一致的。以下是数据:
对于第二和第三种情况,数据不一致,以下是我收到的内容:
这里奇怪的是,在第二或第三种情况下监听UIKeyboardDidChangeFrameNotification时,数据如预期一样返回:
为什么通知数据不同?有人找到了检测分屏键盘事件的明确方法吗?
我的问题是来自UIKeyboardWillChangeFrameNotification的通知数据不一致。
首先,用户可以通过以下3种方式取消停靠键盘:
1. 按住右下角键,然后向上滑动 2. 按住右下角键,当菜单弹出时,选择“取消停靠” 3. 按住右下角键,当菜单弹出时,选择“拆分”
对于情况#1,UIKeyboardWillChangeFrameNotification中的通知数据是一致的。以下是数据:
userInfo = {
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
}
对于第二和第三种情况,数据不一致,以下是我收到的内容:
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}}";
}
这里奇怪的是,在第二或第三种情况下监听UIKeyboardDidChangeFrameNotification时,数据如预期一样返回:
userInfo = {
UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 0}, {768, 304}}";
}
为什么通知数据不同?有人找到了检测分屏键盘事件的明确方法吗?
UIKeyboardFrameEndUserInfoKey
键一起传递的数字。 - Bimawa