如何在iOS Swift中可靠地获得键盘高度?
我有这个代码来检测键盘何时显示并获得其高度如何在iOS Swift中可靠地获得键盘高度?,ios,swift,keyboard-events,uikeyboard,notificationcenter,Ios,Swift,Keyboard Events,Uikeyboard,Notificationcenter,我有这个代码来检测键盘何时显示并获得其高度 @objc func keyboardWasShown (_ notification: Notification) { let keyboardSize = (notification.userInfo![UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue.size; print ("KEYBOARD SIZE: \(keyboardSize.height)"); }
@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它会解决您的所有问题。从is开始,我发现我应该使用
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)
}
只需将库导入到您的项目中。它会自动处理每一件事。谢谢你的信息!欢迎光临!请给出明确的答案,无任何建议或建议。这个答案可能应该在评论中。@BadhanGanesh这实际上解决了我当前和将来在iOS键盘上的所有问题。@Scriptable是的,我在下面我自己发布的答案中提到了这一点。这应该是正确的答案,而不是IQKeyboardManager的建议