En IB tengo mi UIView. Luego tengo una sub-UIView con UIScrollView como una sub-vista. Entonces UIScrollView tiene un sub-UIImageView. UIScrollView y UIImageView son del mismo tamaño. Son mucho más grandes que la UIView de la que son subvistas. Supuse que esto haría que el desplazamiento funcionara. No es así ¿Se necesita algún tipo de código para que funcionen las vistas de desplazamiento?¡UIScrollView no se desplazará!
Respuesta
Debe establecer UIScrollView.contentSize
para que coincida con el tamaño total de desplazamiento, que es el tamaño de su marco de subvista en este caso.
Para desplazarse, debe hacer que el marco de la vista de desplazamiento sea más pequeño que su contenido, la imagen o vista que lo contiene.
hizo eso sin suerte. la subvista de scrollview (uiimageview) es más grande que la vista de desplazamiento. – Marty
¿Ha configurado el tamaño del contenido para que coincida con el tamaño de la imagen? Si no, solo estás recortando la imagen ... no queda nada para desplazarte. – hotpaw2
Configuré el tamaño del marco en IB, ¿es eso lo que quieres decir? Aunque no hice nada con el código. – Marty
Puse todo el contenido de mi scrollview en IB. (botones, etiquetas, campos de texto, etc.). El tamaño completo es 500 alto. Luego cambié el tamaño a 436 alto en IB.
Luego en el código, pongo esto es viewDidLoad:
optionsScrollView.contentSize = CGSizeMake(320,500);
Así que deja 64 píxeles que puede desplazarse. Funciona perfectamente
También coloqué "UIScrollViewDelegate" en el <> llaves de @interface para mi archivo .h y até la salida de delegado de la vista de desplazamiento al propietario de File en IB.
más, ¿habilitó el desplazamiento? vistazo a la propiedad
@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled
vista de desplazamiento funciona con esto:
marco
continuación
contentSize
vistas u objetos etc ...
Si el cuadro está ajustada al tamaño de su contenido, entonces no se desplazará. Configure su marco (en el panel derecho de IB -> segunda última pestaña 'Inspector de tamaño') a la longitud de su aplicación (en mi caso es 367 ya que tengo una barra de navegación y una barra de pestañas) y establezca programáticamente el tamaño de contenido en - yup has adivinado ... más de su marco para que pueda desplazarse.
Los días felices !!
Esto podría ser obvio para la mayoría, pero me pasé siglos preguntándose por qué mi UIScrollView no sería desplazarse por lo que' m publicar lo que me estaba deteniendo en caso de que ayude a alguien más:
UIScrollView debe tener las dimensiones del área visible en la que desea que se presente y no el tamaño de su contenido.
Ridículo en mi nombre, lo sé, pero por si acaso eso ayuda a alguien.
sólo para aclarar esto un poco: el 'UIScrollView' debe ser el tamaño de lo que desea que se muestren en la pantalla, y' propiedad contentSize' de que ScrollView se debe establecer en el tamaño del área que se desplaza (el contenido). La vista de desplazamiento no se desplazará si contentSize es menor o igual que su tamaño de marco. – Olie
Como se menciona en la respuesta aceptada, debe establecer la propiedad UIScrollView
contentSize
.
Esto puede hacerse en Interface Builder.
- seleccionar la vista de desplazamiento
- Seleccione la 'identidad inspeccionar' en el panel de Utilidades a la derecha
- En 'Tiempo de ejecución definido por el usuario Atributos' haga clic en el botón '+'
- Establecer la 'Ruta de la clave' valor a 'contentSize'
- establecer el valor 'Type' a 'Tamaño'
- Establecer el valor de 'valor' a '{anchura, altura}' (por ejemplo: '{320, 600}')
Compila y ejecuta y tu vista de desplazamiento se desplazará.
El contenido del recuadro no afecta al desplazamiento. Ver What's the UIScrollView contentInset property for?
Esto funcionó perfectamente y es una excelente explicación de cómo implementar la respuesta inicial de tia! – Ryan
¡Qué gran respuesta! – HalR
¿Cómo funciona esto si quiero que mi código para trabajar a través de los tipos de dispositivos, obviamente, el iPad sería mucho más amplio que este – Guy
Me gustaría agregar la razón por la cual mi scrollview no se desplazaba hoy. Agregué todas mis subvistas correctamente en el código. Configuro el contentSize correctamente. La interacción del usuario fue habilitada.
Mi problema estaba en el Creador de interfaces. Había colocado un UIButton como una subvista de mi UIScrollView. Ese botón causaba que la vista de desplazamiento no se desplazara. Una vez que eliminé el botón de Interface Builder y lo manejé en el código, mi scrollview comenzó a desplazarse.
Así que listo. Hay otra cosa que ver cuando intentamos descubrir por qué no está desplazándose. Compruebe Interface Builder para obtener subvistas.
La otra cosa importante que no veo mencionada aquí es que UIScrollView no funciona bien con AutoLayout. Si parece que has hecho todo correctamente, comprueba si tu ViewController tiene activada la función de configuración automática y, en caso afirmativo, apágalo.
(Cada vez que se desplaza, las vistas son re-diseñados, Gak.!)
Así:
- Asegúrese ScrollView de
contentSize
es más grande que suframe.size
- Asegúrese
AutoLayout
de ViewController está desactivado.
- 1. iPhone SDK: UIScrollView no se desplaza
- 2. No se puede tocar UITextField en UIScrollView
- 3. UIScrollView no rebota
- 4. UIScrollView no desplazamiento horizontal
- 5. UIScrollView setZoomScale no funciona?
- 6. NSURLRequest no se activará mientras UIScrollView se está desplazando
- 7. iOS UIScrollView clipToBounds = NO No se detectaron subvistas
- 8. UIScrollView + UIWebView = NO scrollsToTop
- 9. ¡Mi UITableView no se desplazará hacia abajo hasta el final de los datos! ¿Por qué?
- 10. Textura de fondo de un UITableView agrupado no se desplazará con la tabla
- 11. UIScrollView no responde a setZoomScale:
- 12. UIButton dentro de UIScrollView no se activa al tocar
- 13. UIScrollView funciona como se esperaba, pero scrollRectToVisible: no hace nada
- 14. iphone: uiscrollview no se desplaza? pero el contenido está configurado ..?
- 15. UIScrollView: el desplazamiento no funciona
- 16. Zoom en UIScrollView no funciona
- 17. UITextView dentro de UIScrollView problema de desplazamiento
- 18. El indicador UIScrollView siempre se muestra?
- 19. UIButton touch se retrasa cuando en UIScrollView
- 20. ¿Cómo siempre se puede desplazar un UIScrollView?
- 21. UIScrollView pausa NSTimer mientras se desplaza
- 22. uiscrollview acercar y alejar no funciona correctamente
- 23. UIScrollView ScrollRectToVisible - no funciona con animate = yes
- 24. UIScrollView - (rebotes = NO) parece anular (pagingEnabled = YES)
- 25. UIScrollview setContentOffset con animación no lineal?
- 26. UIScrollView no puede ver ScrollBars/Indicators.
- 27. UIScrollView se desplaza aleatoriamente al agregar contenido
- 28. UIScrollView touchesBegan
- 29. UIScrollView no mostrar el indicador de desplazamiento
- 30. Java Calendar.set (Calendar.DAY_OF_WEEK, Calendar.SUNDAY), ¿se desplazará hacia atrás, hacia adelante o será desconocido?
¿Entonces eso tiene que hacerse con el código que no está en IB? – Marty
Supongo que sí. Nunca vi eso en IB. – tia
Sí, tenía que hacerse con setContentSize: – Marty