iOS UIKeyboardWillShow срабатывает неожиданно - PullRequest
1 голос
/ 21 января 2020

У меня есть 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

1 Ответ

0 голосов
/ 30 января 2020

Это может быть другой невидимый вид, вызывающий отображение или скрытие клавиатуры. Каждый , наблюдающий за этими событиями, получит уведомления, включая другие виды, которые в настоящее время не активны.

...