scrolling not how guy ios iphone objective-c cocoa-touch uiscrollview

ios - not - UIScrollView no se desplaza?



scrollview in swift 3 (5)

Tengo un UIScrollView creado en el constructor de interfaces con un grupo de objetos UITextView y UIImageView ya agregados. Lo tengo conectado a un IBOutlet , y bajo -(void)viewDidLoad establezco su tamaño de contenido a 1200x2000 . Interacción del usuario Habilitado, Multitouch, Desplazamiento habilitado y muestra los indicadores de desplazamiento vertical y horizontal están todos en YES . Cuando lance la aplicación en el simulador de iOS, no se desplaza. ¿Cuál podría ser la causa de este comportamiento?


La mejor forma en que sé cómo superar este problema sin recurrir a la escritura de código es que todo se puede hacer dentro de un guión gráfico y así es cómo:

  1. Deje la función de autoajuste habilitada.
  2. Haga una UIView genérica una subvista de UIScrollView. 2.1) Coloque todos sus componentes View dentro de este UIView genérico.
  3. Realice una restricción de ajuste automático entre una subvista y UIScrollView. Debe anclar la derecha y / o la parte inferior de la última subvista a la derecha y / o parte inferior de UIScrollView. Así es como UIScrollView conoce el tamaño del contenido.

viewDidLoad es de hecho demasiado pronto, pero viewDidAppear:animated puede no ser lo suficientemente tarde tampoco. El lugar ideal para configurar contentOffset es dentro de viewDidLayoutSubviews .


Si usa Autolayout, asegúrese de poner el código para establecer el tamaño del Contenido dentro de

viewDidLayoutSubviews


  1. viewDidLoad es para pronto. Debe esperar hasta después de que se haya realizado el diseño de las vistas. Intenta configurar contentSize en viewDidAppear.

  2. ¿Estás usando autolayout? Si es así, revisa la siguiente respuesta (y olvida 1.): UIScrollView no usa restricciones de autolayout .


Utilizo una vista personalizada en UIScrollView, para la función de extracción para actualizar, y la vista de desplazamiento no es desplazable. Intento establecer contentSize con AutoLayout , e intentar configurarlo por códigos también. La vista de desplazamiento todavía no puede desplazarse.

Después de pasar de 3 a 4 horas, lo contentInset por contentInset . Le dirá a la vista de desplazamiento para agregar algo de espacio adicional para desplazarse.

override func viewDidLayoutSubviews() { // Add extra 15pt on the `top` of scrollView. //self.scrollView.contentInset = UIEdgeInsetsMake(15, 0, 0, 0) // Add extra 2pt on the `bottom` of scrollView, let it be scrollable. And the UI is more beautiful in my case. self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 2, 0) }

Documentos de referencia: