UIScrollView no se desplaza en iOS7 con autolayout activado
objective-c (3)
Hay una propiedad contentInset de UIScrollViews, puede configurar contentInset para que genere 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 una inserción de 100 puntos en la parte inferior.
Por cierto, hay un documento oficial sobre este asunto. Explica todo lo que debes hacer. Puedes encontrarlo here . Puede encontrar lo que está buscando en la sección ''Cómo mover contenido que se encuentra debajo del teclado''
Tengo un UIScrollView con 6 campos de texto y un botón dentro. No hay suficiente contenido en el scrollView para hacerlo desplazarse.
Pero cuando el teclado muestra, me gustaría que la vista de desplazamiento se desplace para que el usuario no tenga que descartar el teclado para seleccionar otro campo de texto oculto por el teclado.
Estoy usando iOS7 y tengo habilitada la reproducción automática.
¿Alguna sugerencia?
Estoy usando guiones gráficos y el único código que tengo es el siguiente.
archivo reg.h
interface registerViewController : UIViewController <UITextFieldDelegate, UIScrollViewDelegate>
Para hacer que una vista de desplazamiento se pueda desplazar, el tamaño del contenido debe ser más grande que el marco de la vista de desplazamiento para que la vista de desplazamiento tenga algo para desplazarse. Use setContentSize para ajustar el tamaño del contenido:
[scrollview setContentSize:CGSizeMake(width, height)];
En este caso, debe ajustar el tamaño a view.frame.width, view.frame.height + keyboard_height, y luego ajustar el desplazamiento del contenido una vez que aparezca el teclado:
[scrollview setContentOffset:CGPointMake(0, 0 - keyboard_height)];
Si, por algún motivo arriesgado, relacionado con el autolayout, esto todavía no hace que la vista sea desplazable, implemente esta función setContentSize en viewDidLayoutSubviews para anular el autolayout:
- (void)viewDidLayoutSubviews {
[scrollview setContentSize:CGSizeMake(width, height)];
}
EDITAR: Para restablecer la vista de desplazamiento después de descartar el teclado, restablezca el tamaño del contenido de la vista de desplazamiento 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];
Tratar
- Crear vista de desplazamiento
- Añadir vista a la vista de desplazamiento (En mi caso, he añadido la vista como mainView).
- Establecer ScrollView autorizing .
Para establecer el tamaño del contenido de desplazamiento 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;
}