У меня очень странная проблема, которая возникает, когда я нажимаю клавишу возврата, и это происходит только тогда, когда я нажимаю ее в первый раз, каждый раз, когда она работает, как ожидалось.
У меня есть простой класс для управления клавиатурой, этопринимает массив текстовых полей, которые я не разрешил делегировать моему классу, а также регистрирую уведомления клавиатуры:
public init(withTextFields textFields: [UITextField]) {
super.init()
guard textFields.count > 0 else { return }
textFields.forEach{ $0.delegate = self }
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
}
Это мои методы, которые просто распечатывают текст для целей дебюта:
@objc func keyboardWillShow(notification: NSNotification) {
print("aaaa")
}
@objc func keyboardWillHide(notification: NSNotification) {
print("bbbb")
}
и мой UITextFieldDelegate:
public func textFieldDidBeginEditing(_ textField: UITextField) {
print("111")
}
public func textFieldDidEndEditing(_ textField: UITextField) {
print("222")
}
public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
print("333")
return true
}
В моем контроллере представления у меня есть два текстовых поля, которые я передаю своему классу.Когда я нажимаю на первую, я вижу:
111
aaa
, что я и ожидал.проблема появляется, когда я нажимаю клавишу возврата на клавиатуре, затем записывается:
aaa
333
, но регистрируется только первый раз, когда я нажимаю ее, каждый раз, когда регистрируется: 333
.
Когда я нажимаю клавишу возврата, клавиатура уже отображается на экране, так почему она снова вызывает UIResponder.keyboardWillShowNotification
?Мой textFieldShouldReturn это пусто.