2011-08-24 19 views
5

De forma predeterminada, si un campo de texto es hijo de una vista de desplazamiento y se toca cuando está parcialmente fuera del marco de la vista de desplazamiento principal, la vista de desplazamiento se desplaza un poco hacia arriba. Por ejemplo, digamos que tenemos una vista de desplazamiento con una altura de cuadro de 200, pero una altura de tamaño de contenido de 260 y colocamos un campo de texto en la posición 220. Ahora me desplazo hacia arriba y coloco el campo de texto a la mitad dentro del marco de desplazamiento y dejo la otra mitad se cortó. Si toco este campo de texto, noto que la vista de desplazamiento se desplaza automáticamente unos pocos píxeles antes de que aparezca el teclado. Esto es problemático porque ya tengo mi propio código de desplazamiento, así que cuando esto sucede, termina desplazándose dos veces tanto como yo quiero. ¿Hay alguna forma de eliminar este comportamiento predeterminado?¿Cómo impido que UIScrollView se desplace automáticamente cuando se desplaza un UITextField fuera del marco de la vista de desplazamiento?

Respuesta

1

Parece que su vista de desplazamiento se está moviendo en respuesta al teclado que se muestra en lugar de al campo de texto que se está tocando. Eche un vistazo a Apple's Managing the Keyboard documentation; tiene una sección útil sobre scrollviews.

0

Una pregunta similar ya ha sido contestada aquí: https://stackoverflow.com/a/5673026/550177

También puede tratar de restablecer contentOffset del ScrollView cuando el campo de texto se convierte primero en responder. Implementar el campo de texto delegado de esta manera:

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [self.scrollView setContentOffset:_scrollView.contentOffset animated:NO]; 
} 

Este código elimina esa animación automática cuando se selecciona el campo de texto. He probado con iOS 6.1 en el simulador.

Cuestiones relacionadas