ios iphone swift uiscrollview uibutton

ios - UIButtons en la parte inferior de UIScrollView no funciona



iphone swift (5)

Parece que necesitas aumentar la altura del cuadro de la vista del contenedor. El tamaño del contentSize de scrollView solo afecta la forma en que se desplazará, lo cual es irrelevante aquí.

Si el botón está fuera de la vista de contenedor, seguirá apareciendo. Sin embargo, no puede responder a ningún evento táctil.

Creé un UIScrollView en mis storyboards y he agregado 12 UIButtons en una vista de contenedor que está dentro de UIScrollView.

cuando se ejecuta en el simulador de iPhone 5s, se pueden ver 9 de los botones en la pantalla, el resto de los botones solo se pueden ver cuando se desplaza hacia abajo.

se pueden interactuar los 9 botones que se pueden ver inicialmente en la pantalla. Sin embargo, los 3 botones en la parte inferior de la vista de desplazamiento (que deben desplazarse para poder verse) no se pueden interactuar.

Ejecuté la aplicación en un simulador de iPhone 6 que muestra los 12 botones en la pantalla sin tener que desplazarse y los 3 botones inferiores funcionan.

Estoy usando autolayout.

He intentado juguetear con el contentSize de UIScrollView y no ayuda.


Para mí, todo fue solo para Desmarcar la casilla de verificación Ajustar la vista de desplazamiento de las configuraciones en el guión gráfico de ese ViewController.

PD: Las respuestas anteriores no funcionaron para mí.


al usar scrollview en el guión gráfico con autolayout. generalmente se configura utilizando una vista de contenido dentro de la vista de desplazamiento que contendrá todas las demás vistas (por ejemplo, botones, etiquetas, etc.). La vista de contenido suele tener la misma altura y el mismo ancho.

para hacer que su vista de contenido expanda su altura, necesita agregar una restricción de altura y luego asignarla a una salida para que pueda manipular fácilmente su valor en el código. a continuación, establezca la prioridad de restricción de altura de la vista de contenido en 1000 ("requerida") y establezca la prioridad de restricción "ancho igual a: ver" de la vista de contenido en 750 (alto).


Agregue todas las subvistas del contenedor a ScrollView. Y esconde el contenedor. Asegúrese de que el contenedor (ContainerView of scrollView) también sea una subvista de scrollView.


Otra opción es reducir la prioridad en la restricción Content View.Center Y.

En Xcode 9, coloqué el contentView según fuera necesario y el botón se extendió debajo de la vista en el iPhone 5. Cambié dinámicamente el scrollView.contentSize.height y contentView.frame en el controlador de vista. ScrollView se desplazó por mí, pero aún no pude seleccionar el botón y estaba viendo advertencias en el guión gráfico.

Una vez que bajé la prioridad en la Restricción de Alineación del Centro Y para contentView, las advertencias en Storyboard desaparecieron y pude desplazarme hasta la parte inferior del scrollView y seleccionar el botón en el simulador de iPhone 5.

NOTA: Todavía estoy verificando el tamaño del dispositivo y cambiando el tamaño del valor de scrollView.contentSize.height en viewWillLayoutSubviews () para dispositivos pequeños.

override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() scrollView.contentSize.height = (UIDevice.current.isSmallDevice) ? 560 : contentView.frame.size.height }

(UIDevice.current.isSmallDevice es una llamada a una extensión de UIDevice que devuelve un bool determinado por el tamaño de la pantalla)