Estoy tratando de verificar cuándo cambia un campo de texto, equivalente también a la función utilizada para textView; textViewDidChange
hasta ahora he hecho esto:
func textFieldDidBeginEditing(textField: UITextField) {
if self.status.text == "" && self.username.text == "" {
self.topRightButton.enabled = false
} else {
self.topRightButton.enabled = true
}
}
¿Qué tipo de trabajo funciona, pero topRightButton
se habilita tan pronto como se presiona el campo de texto, quiero que se habilite solo cuando el texto se ingrese?
ios
swift
uitextfield
boraseoksoon
fuente
fuente
viewDidLoad
. La acción es letra por letra igual. La aplicación se bloquea tan pronto como se presiona un botón del teclado. Editar: ¡Lo descubrí! Faltaba el punto y coma dentro de la acción. Supuse que solo tenía que ser el mismo que el nombre de la función.Puede hacer esta conexión en el generador de interfaces.
En su guión gráfico, haga clic en el editor asistente en la parte superior de la pantalla (dos círculos en el medio).
Ctrl + clic en el campo de texto en el generador de interfaces.
Arrastre desde EditingChanged al interior de su clase de controlador de vista en la vista de asistente.
Asigne un nombre a su función ("textDidChange", por ejemplo) y haga clic en conectar.
fuente
Swift 5.0
y método de manejo:
Swift 4.0
y método de manejo:
Swift 3.0
y método de manejo:
fuente
La forma en que lo he manejado hasta ahora: en
UITextFieldDelegate
Versión Swift4
fuente
Swift 3
fuente
Swift 3.0.1+ (Algunas de las otras respuestas de swift 3.0 no están actualizadas)
fuente
textField (_: shouldChangeCharactersIn: replaceString :) funcionó para mí en Xcode 8, Swift 3 si desea verificar cada pulsación de tecla.
fuente
Swift 4
Conforme a UITextFieldDelegate .
fuente
Puede usar este método delegado de UITextFieldDelegate. Se dispara con cada cambio de personaje.
Sin embargo, ESTO SÓLO DISPONE ANTES DE QUE SE HAGA UN CAMBIO (de hecho, solo se hace un cambio si devuelve verdadero desde aquí).
fuente
.isEmpty
método no equivale a verdadero hasta DESPUÉS de que este método haya tenido la oportunidad de devolver verdadero; para decirle a la aplicación que el campo de texto debería cambiar.¿Quizás usar RxSwift?
necesitar
agregar importaciones obviamente
Entonces tienes un
textfield : UITextField
U tiene otros 3 métodos.
fuente
Swift 4
Si desea realizar un cambio una vez que el usuario ha ingresado completamente (se llamará una vez que el usuario cierre el teclado o presione Intro).
fuente
fuente
Debes seguir estos pasos:
Código de muestra:
fuente
Así es como puede agregar un
textField text change listener
uso de Swift 3 :Declara tu clase como
UITextFieldDelegate
Luego, tradicionalmente agregue una función textFieldShouldEndEditing:
fuente
Swift 4.2
escribe esto en viewDidLoad
escribe esto fuera de viewDidLoad
Puede cambiar el evento mediante UIControl.Event.editingDidBegin o lo que quiera detectar.
fuente
En caso de que esté interesado en una solución SwiftUI, esto está funcionando para mí:
Tengo que decir que no es mi idea, lo leí en este blog: Enlace SwiftUI: un truco muy simple
fuente
En caso de que no sea posible enlazar addTarget a su UITextField, le aconsejo que enlace uno de ellos como se sugirió anteriormente e inserte el código para su ejecución al final del método shouldChangeCharactersIn.
Y en la llamada en shouldChangeCharactersIn func.
fuente
rápido 4
En viewDidLoad ():
Agregue esta función:
fuente
crear nueva clase personalizada MaterialTextfield.swift
fuente
UITextField
ha actualizado su valor, ¿por qué crear una clase demasiado compleja para resolver este simple problema?