如何在 iOS Swift 中可靠地获取键盘高度?

How to reliably get keyboard height in iOS Swift?

我有这段代码可以检测键盘何时显示并获取其高度。

@objc func keyboardWasShown (_ notification: Notification) {
    let keyboardSize = (notification.userInfo![UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue.size;
    print ("KEYBOARD SIZE: \(keyboardSize.height)");
}

起初,当我第一次点击 UITextView 使其成为第一响应者时,控制台显示 271.0 分。

然后我点击视图以关闭键盘。然后我再次点击 UITextView。现在显示226.0点。

第一次和后续试用的键盘布局没有变化。一开始总是271,然后后面总是226,正确的是271

为什么会这样?以及如何修复它?

不知道你的确切情况,但尝试使用 IQKeyboard 它会处理你所有的问题。

From是answer,我发现我应该用UIKeyboardFrameEndUserInfoKey而不是UIKeyboardFrameBeginUserInfoKey

您可以通过

获取键盘的边框
override func viewDidLoad() {
    super.viewDidLoad()
    let center = NotificationCenter.default
    center.addObserver(self, selector: #selector(keyBoardDidShow(_:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
    // Do any additional setup after loading the view.
}
override func viewDidDisappear(_ animated: Bool) {
    let center = NotificationCenter.default
    center.removeObserver(self, name: NSNotification.Name.UIKeyboardDidShow, object: nil)
}



func keyBoardDidShow(_ notification:Notification)
{
    print((notification.userInfo?["UIKeyboardBoundsUserInfoKey"] as! CGRect).height)
}

只需将 this 库导入您的项目。它会自动处理每一件事。