Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS Swift中可靠地获得键盘高度?_Ios_Swift_Keyboard Events_Uikeyboard_Notificationcenter - Fatal编程技术网

如何在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的建议