如何在 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 库导入您的项目。它会自动处理每一件事。
我有这段代码可以检测键盘何时显示并获取其高度。
@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 库导入您的项目。它会自动处理每一件事。