0

我一直在玩 iPad 上的拆分键盘框架。

好吧,它似乎UIKeyboardWillChangeFrame是在显示或隐藏拆分键盘时触发的。

在停靠模式下,UIKeyboardWillShowUIKeyboardWillHide触发通知。

在 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 的一个已知错误,还是我遗漏了一些东西。

希望有人可以向我指出一些事情。

谢谢。

4

2 回答 2

0

我考虑了一下并写了简单的要点示例

于 2013-07-10T09:24:11.347 回答
0

我不确定您是否仍然遇到此问题,但您缺少通知。当用户开始移动键盘时,UIKeyboardWillChangeFrame发送a。但是,此时通知无法为您提供结束帧,因为用户尚未停止移动键盘。当用户停止移动键盘时,UIKeyboardDidChangeFrameNotification会发出另一个通知: (至少在 5.1 上)。您应该能够在该通知中获得正确的结束帧。

于 2012-05-16T17:31:39.430 回答