Campos UITextField y Teclado que no desaparece ( iOS )

¿Qué podemos hacer cuando tenemos una Vista con varios campos del tipo UITextField y nos encontramos con que hacer click fuera de ellos, después de editarlos, o bien apretar el botón return no da ningún resultado y no nos aparta el teclado?

Por las definiciones que hagamos en nuestro código hemos de verificar antes de nada los siguientes puntos:

  • El fichero .h debe heredar de UIViewController. Ejemplo:
    @interface AuthenticationViewController : UIViewController  {
    
  • En el fichero .m nos puede ayudar el hecho de tener una función que reasigne el control de la interacción (resignFirstResponder). Ejemplo:
    - (IBAction)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    }
    

    Evidentemente será necesaria su declaración en el fichero .h. Ejemplo:

    - (IBAction)textFieldShouldReturn:(UITextField *)textField;
    

Con estos dos puntos cerramos los apartados de modificaciones relativas al código, ahora falta modificar la Vista para que los eventos que tienen lugar en la interfaz se correspondan. En modo abstracto las modificaciones serían estas (dentro de Interface Builder):

  • Con la vista abierta seleccionamos la opción File’s Owner
  • Seleccionamos el tab de Connections de la vista
  • Prestamos atención al apartado de Received Actions donde ahora nos debería salir un nuevo punto bajo el nombre textFieldShouldReturn:
  • Enlazamos el conector de textFieldShouldReturn con el TextField de nuestra interfaz y seleccionamos el evento Touch Up Inside por ejemplo.

En el caso de que tengas varios campos de texto, repetimos el último paso.

Con esto conseguiremos que cuando editemos un campo, al acabar y presionar return se oculte el teclado.

Leave a Reply

Your email address will not be published. Required fields are marked *