Ocultar el teclado en IOS

En IOS el teclado aparece automáticamente cuando un control editable como un Text Field se convierte en el first responder(obtiene el foco), pero después de escribir el texto no hay un modo automático para esconder el teclado como sucede en otras plataformas como lo es Android.

La forma en que se oculta el teclado en IOS es diciéndole explicitamente al text field u otro control editable que en ese momento es el first responder que deje de serlo. Para lograr esto podemos usar los siguientes métodos:

Ocultar el teclado cuando se toca el view principal.

Para ocultar el teclado cuando se toca el view principal agregamos la siguiente función al archivo m de nuestra clase del view controller:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  [self.view endEditing:YES];
  [super touchesBegan:touches withEvent:event];
}

Cuando se detecta un toque sobre el view principal se manda llamar a la función endEditing del view principal con el parámetro YES, ésta función libera el first responder

Ocultar el teclado cuando se toca otro elemento de la pantalla

Si utilizamos un scroll view, o cualquier otro elemento que imposibilite que el usuario toque el view principal, inutilizando la solución propuesta arriba, podemos utilizar los gestos para detectar cuando el usuario toca cualquier otra superficie.

En este ejemplo, creamos un gesto que manda llamar a la función ocultarTeclado cuando el usuario toca la pantalla y lo agregamos a un scroll view llamado “scroll”.

//Ocultar el teclado cuando el scroll view es presionado
    UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(ocultarTeclado:)];
    gesture.delegate = self;
    [self.scroll addGestureRecognizer:gesture];

Y la función ocultarTeclado

-(void) ocultarTeclado:(UIGestureRecognizer *)sender
{
    [self.view endEditing:YES];
}

Ocultar el teclado cuando se presiona la tecla enter

Usando la función -(BOOL)textFieldShouldReturn:(UITextField *)textField del UITextFieldDelegate se puede detectar cuando se presiona la tecla enter y cuál es el cuadro de texto que es el first responser.

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO; //Retorna YES si se permiten saltos de linea
}

Para que se detecte la pulsación de la tecla enter, cada text field debe tener su delegate asignado al view controller que lo contiene
Delegate al view controller

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *