2010-07-12 18 views
11

Estoy desarrollando mi primera aplicación para iPhone y agradecería mucho su contribución sobre un problema que estoy teniendo.iPhone - Anidar UIScrollViews para paginación horizontal y desplazamiento vertical

Estoy buscando implementar el desplazamiento horizontal y vertical. Quiero que se pagine el desplazamiento horizontal, sin paginar el vertical (desplazándose "normalmente"). Un solo UIScrollView con pagingEnabled establecido en SÍ se abrirá en ambas direcciones. La solución natural sería anidar un UIScrollView dentro de otro, sin embargo, cuando lo hago, no puedo obtener el UIScrollView "interno" para desplazarme. Parece la exterior está "comiendo" a todos los eventos de derivación, como en:

UIScrollView : paging horizontally, scrolling vertically?

leí algo acerca de "desplazamiento interno" ser mejorado en el SDK 3.0 y, de hecho cuando agrego un UITableView interior, en lugar de a UIScrollView el desplazamiento funciona sin problemas. Desde las subclases de UITableView UIScrollView imagino que mi comportamiento deseado debería ser posible al crear mi propia subclase de UIScrollView.

¿Es este el enfoque correcto? Si es así, ¿cómo debería ser esta subclase?

Respuesta

9

Esto funciona fuera de la caja con el SDK ahora. Consulte Scrolling Madness y Apple's UIPageControl sample para obtener instrucciones sobre cómo implementar el desplazamiento horizontal paginado con un controlador de vista para cada página.

Los UIScrollViews anidados que agregue como subvistas a su UIScrollView externo deben tener los mismos alturas de cuadro que el contenedor. Si lo hace, el UIScrollView externo pasará a través de los eventos de desplazamiento vertical a la subvista. Mi aplicación tiene tres niveles de anidamiento UIScrollView y UIWebView y he descubierto que Cocoa es muy inteligente al pasar los eventos al que yo quiera, siempre que establezca los tamaños de mi cuadro de forma que solo una vista sea realmente desplazable (contentSize> frame) en cada eje

+0

Gracias por esto. De hecho, esto funciona de la caja. Creo que la vista de nivel superior de tus páginas verticales de desplazamiento debe ser un UIScrollView. Inicialmente, tenía mi desplazamiento vertical debajo de una UIView y esto no funcionó según lo deseado. Recuerde también establecer el tamaño del contenido de los desplazadores verticales. – user621267

0

He estado usando este gran lib por Andrey Tarantsov durante meses: SoloComponents

Usted puede usarlo como una "UITableView horizontal" con soporte para paginación y la vista de reciclaje. Bien hecho y perfectamente diseñado al estilo cacao.

0

De acuerdo con la respuesta de Dylan, en mi caso, en realidad también tuve que hacer alturas de tamaño de contenido iguales para UIScrollViews padre y anidado para hacer que UIScrollView anidado se desplace verticalmente. Hacer solo "las mismas alturas de cuadro que el contenedor" como Dylan explicó no fue suficiente:

parentScrollView.contentSize = CGSizeMake(parentScrollView.contentSize.width, desiredContentHeight); 
nestedScrollView.contentSize = CGSizeMake(nestedScrollView.frame.size.width, desiredContentHeight); 
Cuestiones relacionadas