UITextField - evento de botón de retorno de captura


101

¿Cómo puedo detectar cuando un usuario presionó el botón "regresar" del teclado mientras editaba UITextField? Necesito hacer esto para descartar el teclado cuando el usuario presionó el botón "regresar".

Gracias.

Respuestas:


212
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

No olvide configurar el delegado en el guión gráfico ...

ingrese la descripción de la imagen aquí


47
Asegúrese de que su controlador de vista esté configurado como delegado del campo de texto.
zekel

1
Gracias. Para mí, configuro el delegado a través de self.yourTextField.delegate = self;. Incluso varios campos de texto también funcionan.
haxpor

@Praxiteles Esto ahora se puede hacer en el guión gráfico sin requerir delegación, verifique la respuesta a continuación.
Blake Lockley

51

No se requiere delegación, aquí hay una frase:

- (void)viewDidLoad {
    [textField addTarget:textField
                  action:@selector(resignFirstResponder)
        forControlEvents:UIControlEventEditingDidEndOnExit];
}

Lamentablemente, no puede hacer esto directamente en su Storyboard (no puede conectar acciones al control que las emite en Storyboard), pero puede hacerlo a través de una acción intermedia.


1
Solo quiero señalar que el UIControlEventEditingDidEndOnExitevento se envía solo si el textFieldShouldReturn:método delegado devuelve YES (sin antes renunciar al campo de texto).
alex-i

Usted no tiene que poner en práctica delegación. Pero quizás si tienes que volver YESpor este método.
mxcl

9

SWIFT 3.0

override open func viewDidLoad() {
    super.viewDidLoad()    
    textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}

en la función enterPressed () ponga todos los comportamientos que busca

func enterPressed(){
    //do something with typed text if needed
    textField.resignFirstResponder()
}

8

Ahora puede hacer esto en el guión gráfico utilizando el evento enviado 'Did End On Exit'.

En su subclase de controlador de vista:

 @IBAction func textFieldDidEndOnExit(textField: UITextField) {
    textField.resignFirstResponder()
}

En su guión gráfico para el campo de texto deseado:

ingrese la descripción de la imagen aquí


Esta es la respuesta correcta ahora.
Psiloc

3

Versión Swift usando UITextFieldDelegate:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    resignFirstResponder()
    return false
}

2

Rápido 5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)

-1
- (BOOL)textFieldShouldReturn:(UITextField *)txtField 
{
[txtField resignFirstResponder];
return NO;
}

Cuando se hace clic en el botón Intro, se llama a este método de delegado. Puede capturar el botón de retorno de este método de delegado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.