我有这个代码来检测键盘何时显示并得到它的高度。
@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。
为什么会发生这种情况?以及如何修复它?
发布于 2018-07-02 17:47:37
不知道你的确切场景,但试着使用IQKeyboard,它会解决你所有的问题。
发布于 2018-07-02 17:50:03
在is answer中,我发现我应该使用UIKeyboardFrameEndUserInfoKey
而不是UIKeyboardFrameBeginUserInfoKey
。
发布于 2018-07-02 17:50:55
你可以通过以下方式获得键盘的框架
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)
}
https://stackoverflow.com/questions/51133218
复制相似问题