Код проблемы
public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}
Создание TextField
@discardableResult fileprivate func otpTextField() -> BJOTPTextField {
let textField = BJOTPTextField()
textField.text = "1"
textField.delegate = self
textField.textColor = .black
textField.textAlignment = .center
textField.isSecureTextEntry = true
textField.keyboardType = .numberPad
return textField
}
Вопрос
У меня есть подкласс UITextField
в контроллере моего представления с текстом ("1") ) во время инициализации. Я копирую и вставляю большой текст в текстовое поле. В методе shouldChangeCharactersIn
, хотя я возвращаю явно false
, текущий текст ("1") в текстовом поле удаляется и становится пустым, почему ?
shouldChangeCharactersIn
документация
Возвращает true, если указанный диапазон текста следует заменить; в противном случае, false, чтобы сохранить старый текст.
Почему мой старый текст не поддерживается? И важное наблюдение заключается в том, что переопределение текстового поля происходит до вызова shouldChangeCharactersIn
. Очень странно.
PS: Текст текстового поля не изменяется и не назначается нигде, кроме метода shouldChangeCharactersIn
.