我一直在玩 iPad 上的拆分键盘框架。
好吧,它似乎UIKeyboardWillChangeFrame
是在显示或隐藏拆分键盘时触发的。
在停靠模式下,UIKeyboardWillShow
会UIKeyboardWillHide
触发通知。
在 NSNotification 对象中,我们能够检索键盘的框架,这对于停靠模式和拆分模式都是正确的。
现在,当我们在屏幕上移动拆分键盘时,真正的乐趣就开始了。每次我们在屏幕上移动键盘时,通知对象中的 endframe 都会出现(0,0,0,0)。convertFrame
在我使用坐标将框架转换为(0,-124,0,0)
. 这适用于向上或向下方向的键盘移动。
在所有其他情况下,endframe 似乎在框架上提供了正确的坐标。
这段代码给了我精确的点数。
CGRect startFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
当用户在屏幕上移动拆分键盘时,此结束帧为 (0,0,0,0)。
现在根据当前视图获取准确坐标:
CGRect convertedStartFrame = [self.view.window convertRect:startFrame toView:self.view];
CGRect convertedEndFrame = [self.view.window convertRect:endFrame toView:self.view];
This convertedEndFrame = (0,-124,0,0) when endFrame = (0,0,0,0).
还有一件事,我不是通过代码移动键盘。
我不太确定,这是 Apple 的一个已知错误,还是我遗漏了一些东西。
希望有人可以向我指出一些事情。
谢谢。