UIScrollView no se desplaza en iOS7 con autolayout en

Tengo un UIScrollView con 6 campos de text y un button dentro de él. No hay suficiente contenido en scrollView para que se desplace.

Pero cuando se muestra el keyboard, me gustaría que la vista de desplazamiento se desplace para que el usuario no tenga que descartar el keyboard para seleccionar otro campo de text oculto por el keyboard.

Estoy usando iOS7 y tengo habilitada la reproducción automática.

¿Alguna sugerencia?

Estoy usando storyboards y el único código que tengo es el siguiente.

file reg.h

interface registerViewController : UIViewController <UITextFieldDelegate, UIScrollViewDelegate> 

Para hacer desplazable una vista de desplazamiento, el tamaño de contenido debe ser mayor que el marco de la vista de desplazamiento, por lo que la vista de desplazamiento tiene algo para desplazarse. Use setContentSize para ajustar el tamaño de contenido:

 [scrollview setContentSize:CGSizeMake(width, height)]; 

En este caso, debe ajustar el tamaño a view.frame.width, view.frame.height + keyboard_height, luego ajuste el desplazamiento de contenido una vez que aparezca el keyboard:

 [scrollview setContentOffset:CGPointMake(0, 0 - keyboard_height)]; 

Si por alguna razón fastidiosa, autolayout, esto todavía no hace que la vista sea desplazable, implementa esta function setContentSize en viewDidLayoutSubviews para anular la reproducción automática:

 - (void)viewDidLayoutSubviews { [scrollview setContentSize:CGSizeMake(width, height)]; } 

EDITAR: para restablecer la vista de desplazamiento después de descartar el keyboard, restablezca el tamaño de contenido de scrollview al marco de la vista de desplazamiento y el desplazamiento a cero:

 [scrollview setContentSize:CGSizeMake(scrollview.frame.size.width, scrollview.frame.size.height)]; [scrollview setContentOffset:CGPointZero]; 

PS Para animar el desplazamiento de contenido, use:

 [scrollview setContentOffset:offsetSize animated:YES]; 

Hay una propiedad contentInset de UIScrollViews, puede configurar the contentInset para hacer espacio adicional en la parte inferior para permitir el desplazamiento sin cambiar contentSize.

 UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, 100, 0.0); scrollView.contentInset = contentInsets; 

El código anterior agrega 100 puntos insertados en la parte inferior.

Por cierto, hay un documento oficial sobre este asunto. Explica todo lo que debes hacer. Puedes encontrarlo aquí . Puede encontrar lo que está buscando en la sección 'Mover contenido que se encuentra debajo del keyboard'

Tratar

  1. Crear vista de desplazamiento
  2. Agregar vista a la vista de desplazamiento (en mi caso agregué la vista como vista principal).
  3. Establecer autorizaciones de ScrollView .
  4. Establecer autorizaciones de MainView .

  5. Para configurar el contenido de desplazamiento Tamaño igual a la vista creada, agregue debajo de la línea

Agregue la siguiente línea

 -(void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; self.scrollView.contentSize = self.mainView.frame.size; }