首页 > 解决方案 > 无法获得 iPad 浮动键盘的正确高度

问题描述

我正在使用以下代码来获取 iPad 键盘的高度:

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(printKeyboardHeight),
            name: UIResponder.keyboardDidChangeFrameNotification,
            object: nil
        )
    }

    @objc private func printKeyboardHeight(notification: Notification) {
        guard let keyboardRect = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else { return }
        print("==> keyboardFrameEndUserInfoKey height: \(keyboardRect.size.height)")
    }
}

iPad上的这段代码在键盘正常的时候可以正常工作,但是在键盘浮动的时候就不行了。

用户点击文本字段后,会出现键盘并调用 keyboardDidChangeFrameNotification 通知。

如果键盘是浮动的,那么我们第一次得到错误的高度 362。如果用户随后手动移动浮动键盘的某个位置,则再次调用通知并返回正确的值 308(见下图)。

这是一个错误还是我错过了什么?我需要能够在键盘第一次出现时获得正确的高度。

这发生在 iOS 13 和 iOS 14 上。

任何想法?

在此处输入图像描述

标签: iosswiftipaduikit

解决方案


推荐阅读