Estate atento ya que en este tutorial vas a encontrar la solución que buscas.
Solución:
Rápido 4, Rápido 5
Este método no utiliza NSString
// MARK: - UITextFieldDelegate
extension MyViewController: UITextFieldDelegate
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool
if let text = textField.text,
let textRange = Range(range, in: text)
let updatedText = text.replacingCharacters(in: textRange,
with: string)
myvalidator(text: updatedText)
return true
Nota. Tenga cuidado cuando utilice un campo de texto protegido.
stringByReplacingCharactersInRange
devolver un nuevo stringentonces, ¿qué tal:
func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool
if let text = textField.text as NSString?
let txtAfterUpdate = text.replacingCharacters(in: range, with: string)
self.callMyMethod(txtAfterUpdate)
return true
Rápido 3 y 4
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
let textFieldText: NSString = (textField.text ?? "") as NSString
let txtAfterUpdate = textFieldText.replacingCharacters(in: range, with: string)
callMyMethod(txtAfterUpdate)
return true
func textFieldShouldClear(_ textField: UITextField) -> Bool
callMyMethod("")
return true
Rápido 2.2
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
let textFieldText: NSString = textField.text ?? ""
let txtAfterUpdate = textFieldText.stringByReplacingCharactersInRange(range, withString: string)
callMyMethod(txtAfterUpdate)
return true
func textFieldShouldClear(textField: UITextField) -> Bool
callMyMethod("")
return true
Aunque el textField.text
La propiedad es opcional, no se puede establecer en nil. Establecerlo en cero se cambia a vacío string dentro UITextField
. En el código anterior, es por eso que textFieldText
está configurado para vaciar string Si textField.text
es nulo (a través del operador coalescente nil ??
).
Implementar textFieldShouldClear(_:)
maneja el caso en el que el botón borrar del campo de texto está visible y pulsado.
Sección de Reseñas y Valoraciones
Recuerda dar visibilidad a esta noticia si si solucionó tu problema.