UIKeyboardFrameEndUserInfoKey返回错误的原点 - iOS7

时间:2013-11-13 12:58:01

标签: ios keyboard ios7 textfield

当键盘隐藏文本字段时,尝试从视图控制器移动根视图(使用scrollView)时遇到一些问题。此文本字段不在根目录中。

我的应用程序在iOS7中运行并且只有纵向模式,如果位置是底部主页按钮,我从UIKeyboardFrameEndUserInfoKey获取正确的值:

(CGRect)$ 2 = origin =(x = 0,y = 760)size =(width = 768,height = 264)

但如果该位置是Top home按钮,则从UIKeyboardFrameEndUserInfoKey获取错误的原点:

(CGRect)$ 3 = origin =(x = 0,y = 0)size =(width = 768,height = 264)

你有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:8)

我也遇到了这个问题。虽然我觉得我以前从来没有处理过这个问题,但我不能肯定地说,因为我没有太多处理这些东西的经验。虽然,它在iPhone上运行良好,所以我不确定这里发生了什么。

无论如何,苹果文档看起来像这样:

  

包含CGRect的NSValue对象的键,用于在屏幕坐标中标识键盘的结束帧。这些坐标不考虑由于界面方向改变而应用于窗口内容的任何旋转因子。因此,您可能需要在使用之前将矩形转换为窗口坐标(使用convertRect:fromWindow:方法)或查看坐标(使用convertRect:fromView:方法)。

所以,我只是这样做了:

keyboardRect = [self.view convertRect:keyboardRect fromView:nil];

将矩形转换为窗口的坐标系。

答案 1 :(得分:2)

这是一个记录在案的特征:

  

注意:UIKeyboardFrameBeginUserInfoKey中包含的矩形   和userInfo的UIKeyboardFrameEndUserInfoKey属性   字典只应用于它包含的大小信息。   不要使用矩形的原点(总是{0.0,0.0})   矩形交叉操作。因为键盘是动画的   到位,键盘的实际边界矩形会发生变化   随着时间的推移。

https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html