2011-08-26 13 views
10

Tengo una vista que tiene campos de texto que van desde la parte superior de la pantalla hasta la parte inferior de la pantalla. Obviamente, los campos inferiores de texto quedan tapados por el teclado cuando aparece, así que me dispuse a deshacerme de este problema.ScrollRectToVisible no funciona según lo previsto

me registro para notificaciones en el método viewDidLoad, a continuación, cuando se envía el UIKeyboardDidShowNotification, este método se llama:

- (void)keyboardWasShown:(NSNotification*)aNotification 
{ 
    NSDictionary* info = [aNotification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 

    [scrollView scrollRectToVisible:activeField.frame animated:YES]; 
} 

El problema no es nada se está desplazado en absoluto, y mucho menos desplazado a visible. ¿Que me estoy perdiendo aqui?

Todos mis campos de texto se encuentran dentro de una vista de desplazamiento, etc.

Gracias de antemano.

+0

Establezca el tamaño del contenido, asegurándose de que ni el ancho ni la altura sean cero. A continuación, agregue o reste de contentInset height hasta que funcione. scrollView.contentSize = CGSizeMake (kbSize.width, kbSize.height); scrollView.contentInset = UIEdgeInsetsMake (0, 0, kbSize.height - 250, 0); // (arriba, izquierda, abajo, derecha) –

Respuesta

25

This es un puesto similar en scrollRectToVisible: no está funcionando correctamente, y no hay una solución asegurándose de que el contentSize está ajustada correctamente. ¡Espero que ayude!

+0

¿Por qué scrollRectToVisible: no funcionará? –

+0

@Yatheesha Porque el 'UIScrollView' solo se desplazará con ese método si la diferencia de tamaño entre su tamaño y su' contentSize' es suficiente (es decir, si 'contentSize' es 50 puntos más que' [[UIScrollView frame] size] ' , podrá desplazarse hacia abajo 50 puntos, pero no más. En este caso, queremos desplazarnos más para deslizar el texto sobre el teclado, por lo que haremos que el 'UIScrollView' crea que hay más que mostrar, lo cual hacemos aumentando el 'contentSize '. – dadude999

+1

Mientras que la respuesta se redirige a otro enlace, me ayudó a resolver que olvidé agregar bottom a subview agregado dentro de scrollview, contentSize el ancho era perfecto pero la altura era 0! Gracias :) – KiranJasvanee

1

También desmarque ViewController's Under Top Bars

Cuestiones relacionadas