ios - 错误的键盘隐藏
问题描述
我有一些奇怪的问题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
}
}
}
}
推荐阅读
- python - “错误打开终端:未知。” 通过 Python 在 SSH 服务器中运行命令时出错
- vba - 从 VBA for Word 中的多个样式段落的开头删除字符
- amazon-web-services - Athena 如何知道如何对您的数据进行分区?
- c# - 为什么我的结果没有像我期望的那样写入控制台?
- android - 从 MainActivity 范围调用函数
- reactjs - TypeError:this.props.decrementCount 不是函数
- javascript - 主题发射后的 RxJS 执行顺序
- django - 输入类型 Date 在页面 RTL 中没有值,在页面 LTR 时有值
- ios - Firebase登录成功后如何呈现/执行主视图控制器?
- excel - 使用 Office.js,如何在 Excel 中获取表格的确切样式