2

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

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

(CGRect) $2 = 原点=(x=0, y=760) 大小=(宽度=768, 高度=264)

但是如果位置是顶部主页按钮 y 从 UIKeyboardFrameEndUserInfoKey 得到错误的来源:

(CGRect) $3 = 原点=(x=0, y=0) 大小=(宽度=768, 高度=264)

你有什么主意吗?

谢谢!

4

2 回答 2

8

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

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

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

所以,我只是做了:

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

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

于 2013-12-03T19:28:28.090 回答
2

这是一个记录在案的功能:

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

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

于 2014-06-17T11:41:23.713 回答