【问题标题】:UIKeyboardFrameBeginUserInfoKeyUIKeyboardFrameBeginUserInfoKey
【发布时间】:2011-12-25 07:47:13
【问题描述】:

UIKeyboardFrameBeginUserInfoKey 和 UIKeyboardFrameEndUserInfoKey 有什么区别?

这是否意味着“开始”返回的值与“结束”返回的值不同?

谢谢!

【问题讨论】:

    标签: ios keyboard constants


    【解决方案1】:

    UIKeyboardFrameBeginUserInfoKey 将在动画开始之前返回键盘的帧。 UIKeyboardFrameEndUserInfoKey 将在动画完成后返回键盘的帧。以如下sn-p代码为例:

    NSDictionary* info = [notification userInfo];
    CGRect beginFrame = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
    CGRect endFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    

    如果您要在调试窗口中打印beginFrameendFrame 的值,您可能会发现如下内容:

    (gdb) print beginFrame
    $1 = {
       origin = {
         x = 0, 
         y = 480
       }, 
       size = {
         width = 320, 
         height = 216
       }
     }
     (gdb) print endFrame
     $2 = {
       origin = {
         x = 0, 
         y = 264
       }, 
       size = {
         width = 320, 
         height = 216
       }
     }
    

    所以在 iPhone 上,这表明键盘将从屏幕底部进入动画。键盘的大小没有改变(如预期的那样),但 y 坐标显示了键盘的开始和结束位置。

    【讨论】:

    • 键盘开始移动前,y=0。我不明白为什么它是 480。-480 更有意义,因为键盘不在视图中......