【发布时间】:2020-10-17 00:39:19
【问题描述】:
我在表格中有 textField 和 textView。编辑 textFiled 时,此代码有效,所有文本字段均位于键盘上方。当我编辑 textView 时,什么也没有发生。这将有助于编辑代码,以便 textView 也可以使用此代码。请不要提供第三方库。谢谢
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardWillShow(_:)),
name: UIResponder.keyboardWillShowNotification,
object: nil)
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardWillHide(_:)),
name: UIResponder.keyboardWillHideNotification,
object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
NotificationCenter.default.removeObserver(self)
}
override func viewDidLoad() {
super.viewDidLoad()
}
@objc
fileprivate func keyboardWillShow(_ notification: Notification) {
let keyboardFrame = ((notification as NSNotification).userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue ?? CGRect.zero
let contentInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: keyboardFrame.height, right: 0.0)
self.tableView.contentInset = contentInsets
self.tableView.scrollIndicatorInsets = contentInsets
UIView.animate(withDuration: 0.25) {
self.tableView.layoutIfNeeded()
self.view.layoutIfNeeded()
}
}
@objc
fileprivate func keyboardWillHide(_ notification: Notification) {
tableView.contentInset = .zero
}
【问题讨论】:
-
键盘出现了吗?是否设置了断点来检查
keyboardWillShow函数是否被调用? -
@Mat 是的,它有效。 textField一切都很好,但是TextView没有结果,我可以滚动然后可以看到,它可以滚动到键盘本身吗?
标签: swift uitableview textview keyboard uitextfield