У меня есть textField, в котором я отключаю заглавные буквы, установив .autocapitalizationType = .none
, а в shouldChangeCharactersIn range
я заменяю любые заглавные буквы строчными буквами на , используя этот ответ .
Принудительно вводим только строчные буквыбуквы работают нормально, но целевой метод, который я добавил в .editingChanged
, перестал работать.
Почему .editingChanged
перестал работать?
let emailTextField: UITextField = {
let textField = UITextField()
return textField
}()
let userNameTextField: UITextField = {
let textField = UITextField()
textField.autocapitalizationType = .none
textField.addTarget(self, action: #selector(printSomething), for: .editingChanged)
return textField
}()
@objc func printSomething() {
// as I type inside the usernameTextField this no longer prints
print("something")
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// only change characters for username textfield
if textField == userNameTextField {
userNameTextField.text = (textField.text! as NSString).replacingCharacters(in: range, with: string.lowercased())
return false
}
return true
}