我有一个UITextView
和一个UITableView
,我需要在键盘打开和关闭时调整底部位置和TableView
的滚动,因此我设置了键盘。 KeyboardWillShow
和KeyboardDidShow
不仅会在键盘打开(预期)时触发,还会在加载视图和键盘关闭时触发(不期望)。这些是在应用中设置的唯一通知。
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidShow(_:)), name: .UIKeyboardDidShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: .UIKeyboardWillHide, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidHide(_:)), name: .UIKeyboardDidHide, object: nil)
@objc func keyboardWillShow(_ notification: Notification) {
print ("KEYBOARD WILL SHOW")
}
@objc func keyboardDidShow(_ notification: Notification) {
print ("KEYBOARD DID SHOW")
}
@objc func keyboardWillHide(_ notification: Notification) {
print ("KEYBOARD WILL HIDE")
}
@objc func keyboardDidHide(_ notification: Notification) {
print ("KEYBOARD DID HIDE")
}
单击TextView
打开键盘,然后拖动TableView
将其关闭。 (TableView
已通过“交互式关闭”和“拖动时关闭”进行了测试。)
这是加载视图,打开键盘和关闭键盘后的控制台输出:
查看首次加载(键盘未打开)。...
KEYBOARD WILL SHOW
(不可预期)
KEYBOARD DID SHOW
(不可预期)
键盘打开...
KEYBOARD WILL SHOW
(预期)
KEYBOARD DID SHOW
(预期)
键盘关闭...
KEYBOARD WILL HIDE
(预期)
KEYBOARD WILL SHOW
(不可预期)
KEYBOARD DID HIDE
(预期)
KEYBOARD DID SHOW
(不可预期)
此外,当TableView
设置为“以交互方式关闭”并且我将TableView
缓慢向下拖动时,当键盘大约为2/3时,“ WillShow / DidShow”事件会像疯狂地启动封闭的方式。
什么可能导致这些键盘打开事件触发?
Xcode 11.3 / iOS 9.0
答案 0 :(得分:0)
这可能是另一个看不见的视图,导致键盘被显示或隐藏。 所有人观察这些事件将获得通知,包括当前未处于活动状态的其他视图。