UIKeyboardFrameBeginUserInfoKey&UIKeyboardFrameEndUserInfoKey

在“pipe理键盘” 文档中 :

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

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

start frameend frame的含义是什么? 他们有什么区别?

开始帧是键盘处于animation开始位置的位置:如果键盘正在显示,则显示offscreen;如果键盘正在隐藏,则显示在屏幕上。 结束帧是键盘将在animation结束的位置:反之亦然。 您可以使用它们之间的区别来编写一个响应隐藏和显示键盘的方法。

animation视图更改时,请务必使用UIKeyboardAnimationCurveUserInfoKeyUIKeyboardAnimationDurationUserInfoKey :这样,您的animation和操作系统的animation就会同步。

另一个提示:链接到状态的文档“userInfo字典的UIKeyboardFrameBeginUserInfoKey和UIKeyboardFrameEndUserInfoKey属性中包含的矩形只能用于其包含的大小信息。不要使用矩形的原点(始终为{0.0, 0.0})在矩形相交操作“。 至less在OS 3.2上的iPad上,这是不正确的。 两个矩形的大小相同,而屏幕坐标中的原点在两者之间是不同的。

你可能会发现这个问题有帮助: UIKeyboardBoundsUserInfoKey已被弃用,而是使用什么?