使用自动完成获取错误的键盘框架

Getting wrong keyboard frame with auto-completion

我尝试使用 UIKeyboardDidChangeFrameNotification 调整我的布局,以便在键盘更改框架时得到通知。我调整布局的功能被正确调用并且运行良好,除非自动完成功能关闭。

    func keyboardFrameChanged(notification : NSNotification)
    {
        println("Keyboard frame changed")

        var rect = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue())!
        println(rect)
    }

我为变量 rect 获取的值是 (0.0, 500.0, 414.0, 236.0) 当自动完成打开时和 (0.0, 465.0, 414.0, 271.0) 当自动完成关闭时,这应该是相反的.我不明白为什么要切换这些值。为什么会发生这种情况,我该如何解决?

进一步研究后,我发现不仅仅是自动更正导致我得到错误的帧,基本上是在每次调用函数时。

你应该使用 UIKeyboardFrameEndUserInfoKey:

var rect = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey]?.CGRectValue())!