¿Cómo puedo hacer que un UITextField se mueva hacia arriba cuando el teclado está presente, al comenzar a editar?

Con el SDK de iOS:

Tengo un UIView con UITextFields que muestran un teclado. Lo necesito para poder:

  1. Permitir el desplazamiento del contenido de la UIScrollView para ver los otros campos de texto una vez que se abre el teclado

  2. "Saltar" automáticamente (desplazándose hacia arriba) o acortando

Sé que necesito un UIScrollView. Intenté cambiar la clase de mi UIView a una UIScrollView pero sigo sin poder desplazar los cuadros de texto hacia arriba o hacia abajo.

¿Necesito tanto un UIView y UIScrollView? ¿Entra uno en el otro?

¿Qué se debe implementar para desplazarse automáticamente al campo de texto activo?

Idealmente, la mayor parte posible de la configuración de los componentes se realizará en Interface Builder. Me gustaría escribir código solo para lo que lo necesite.

Nota la UIView (o UIScrollView) con el que estoy trabajando aparece en una barra de pestañas (UITabBar), que debe funcionar con normalidad.


Editar: estoy agregando la barra de desplazamiento solo para cuando aparece el teclado. Aunque no es necesario, siento que proporciona una mejor interfaz porque el usuario puede desplazarse y cambiar los cuadros de texto, por ejemplo.

Lo tengo funcionando donde cambio el tamaño del marco del UIScrollView cuando el teclado sube y baja. Simplemente estoy usando:

-(void)textFieldDidBeginEditing:(UITextField *)textField { 
    //Keyboard becomes visible
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
                     scrollView.frame.origin.y, 
scrollView.frame.size.width,
scrollView.frame.size.height - 215 + 50);   //resize
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
   //keyboard will hide
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
       scrollView.frame.origin.y, 
     scrollView.frame.size.width,
      scrollView.frame.size.height + 215 - 50); //resize
}

Sin embargo, esto no "mueve hacia arriba" ni centra automáticamente los campos de texto inferiores en el área visible, que es lo que realmente me gustaría.

preguntado el 14 de julio de 09 a las 14:07

Mira esto. No te preocupes. TPKeyboardEvitar -

Está documentado por Apple, creo que es la mejor manera: desarrollador.apple.com/library/ios/#documentation/StringsTextFonts/… -

Use este código Solo necesita 1 línea en el archivo appdelegate.m y funciona. github.com/hackiftekhar/IQKeyboardManager -

La mejor forma que encontré hasta ahora es este código abierto. TPKeyboardEvitar -

Otra forma es agregar dichos campos de texto de contenido y todo en TableViewController y dejar que tableview maneje esto. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.