【发布时间】:2017-10-02 13:30:27
【问题描述】:
我的静态 UITableView 的一个单元格中有几个 UITextField。他们中的大多数人在获得焦点时都很好。
但是当某些字段获得焦点时(例如当我单击 Unit No 字段时),单元格会跳转并像这样被键盘覆盖。
完全不知道。任何想法?谢谢。
【问题讨论】:
-
终于找到原因了。如果单元格高度超过屏幕高度,则会导致此问题。
标签: ios uitableview
我的静态 UITableView 的一个单元格中有几个 UITextField。他们中的大多数人在获得焦点时都很好。
但是当某些字段获得焦点时(例如当我单击 Unit No 字段时),单元格会跳转并像这样被键盘覆盖。
完全不知道。任何想法?谢谢。
【问题讨论】:
标签: ios uitableview
尝试使用这个 pod https://github.com/hackiftekhar/IQKeyboardManager,它将涵盖所有键盘场景。
如果您想使用自定义代码,您必须在 viewWillAppear 中订阅 UIKeyboardWillShow 和 UIKeyboardWillHide,并在 viewWillDisappear。之后覆盖 touchesBegan 这将处理您在屏幕上的所有触摸,您可以在此函数中结束编辑。
我的示例代码:
override func viewWillAppear(_ animated: Bool) {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(self)
}
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
UIView.animate(withDuration: 1, animations: {
self.view.bounds.origin.y += keyboardSize.height
}
}
}
func keyboardWillHide(notification: NSNotification) {
self.view.bounds.origin.y = 0
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
【讨论】:
您是否尝试过 IQKeybordManager POD。它自动管理一切。
【讨论】: