如何解决错误的键盘隐藏
我对 tableView.keyboardDismissMode = .onDrag
有一些奇怪的问题。
当 textField
点按它可以时,我抬起了我的视图。然后我想完全像在 iMessage 中一样关闭我的键盘,但在我的情况下,当 keyboardWillHide
通知调用 view.frame.origin.y
不等于 0。它等于 12。有趣的事实是我的代码在模拟器中工作得非常酷,但仅此错误在真正的 iPhone 11 上。有什么想法吗?
我的带有键盘通知的代码
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
self.view.frame.origin.y = -keyboardSize.size.height + (self.tabBarController?.tabBar.bounds.height)!
}
}
@objc func keyboardWillHide(notification: NSNotification) {
self.view.frame.origin.y = 0
}
解决方法
我找到了解决方案。问题是因为多次调用了 keyboardWillShow。 处理它的代码。
@objc func keyboardWillShow(notification: NSNotification) {
var _kbSize:CGSize!
if let info = notification.userInfo {
let frameEndUserInfoKey = UIResponder.keyboardFrameEndUserInfoKey
// Getting UIKeyboardSize.
if let kbFrame = info[frameEndUserInfoKey] as? CGRect {
let screenSize = UIScreen.main.bounds
let intersectRect = kbFrame.intersection(screenSize)
if intersectRect.isNull {
_kbSize = CGSize(width: screenSize.size.width,height: 0)
} else {
_kbSize = intersectRect.size
}
if _kbSize.height != 0 {
self.view.frame.origin.y = -_kbSize.height + (self.tabBarController?.tabBar.bounds.height)!
} else {
self.view.frame.origin.y = 0
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。