У меня есть 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
(НЕ ожидается)
Далее, когда * Для параметра 1046 * установлено значение «Отклонить интерактивно», и я медленно перетаскиваю TableView
, события «WillShow / DidShow» запускаются как сумасшедшие, начиная с того момента, когда клавиатура закрывается примерно на 2/3 пути.
Что может вызывать события открытия клавиатуры?
Xcode 11.3 / iOS 9.0