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.

Ilya Suzdalnitski
fuente

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í

Ilya Suzdalnitski
fuente
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.

mxcl
fuente
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()
}
drpawelo
fuente
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í

Blake Lockley
fuente
Esta es la respuesta correcta ahora.
Psiloc
3

Versión Swift usando UITextFieldDelegate:

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

Rápido 5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)
Ted
fuente
-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.

Mahendra Vishwakarma
fuente