2010-07-12 14 views
11

sto sviluppando la mia prima applicazione per iPhone e sarei molto si apprezzerà di ingresso del ragazzo su un problema che sto avendo.iPhone - UIScrollViews di nidificazione per paginazione orizzontale e lo scorrimento verticale

Sto cercando di implementare lo scorrimento sia orizzontalmente che verticalmente. Voglio che lo scorrimento orizzontale sia impaginato, senza che sia verticale la pagina (scorrendo "normalmente"). Un singolo UIScrollView con pagingEnabled impostato su YES eseguirà la pagina in entrambe le direzioni. La soluzione naturale sarebbe quella di annidare un UIScrollView all'interno di un altro, tuttavia quando lo faccio, non riesco a far scorrere l'UIScrollView "interno". Sembra che quello esterno è "mangiare" il backup di tutti gli eventi rubinetto, come in:

UIScrollView : paging horizontally, scrolling vertically?

ho letto qualcosa su "scorrimento interno" essere migliorato nel SDK 3.0 e in realtà quando aggiungo un UITableView interna al posto di un UIScrollView lo scorrimento funziona perfettamente. Poiché UITcrollView sottoclasse UITableView, immagino che il mio comportamento desiderato dovrebbe essere raggiungibile creando la mia sottoclasse di UIScrollView.

È questo l'approccio giusto? Se sì, come dovrebbe essere questa sottoclasse?

risposta

9

Questo funziona out of the box con l'SDK ora. Vedere Scrolling Madness e Apple's UIPageControl sample per le linee guida su come implementare lo scorrimento orizzontale paginato con un controller di visualizzazione per ogni pagina.

Le UIScrollViews nidificate aggiunti come subviews al UIScrollView esterno dovrebbe avere le stesse altezze di quadro come il contenitore. Se lo fai, l'UIScrollView esterno passerà attraverso gli eventi di scorrimento verticale alla sottoview. La mia app ha tre livelli di annidamento di UIScrollView e UIWebView e ho scoperto che Cocoa è davvero intelligente nel passare gli eventi a quello che voglio purché imposti le dimensioni dei fotogrammi in modo che solo una vista sia veramente scorrevole (contentSize> frame) su ogni asse.

+0

Grazie per questo. Questo funziona davvero fuori dagli schemi. Credo che la visualizzazione di livello superiore delle pagine a scorrimento verticale debba essere un UIScrollView. Inizialmente, avevo il mio scroller verticale sotto un UIView e questo non ha funzionato come desiderato. Ricorda anche di impostare il contentSize dei tuoi scroller verticali. – user621267

0

Sto usando questo grande lib da Andrey Tarantsov per mesi: SoloComponents

è possibile utilizzarlo come un "UITableView orizzontale" con il supporto per l'impaginazione e la vista del riciclaggio. Ben progettato e perfettamente disegnato in stile cacao.

0

In base alla risposta di Dylan, nel mio caso, in realtà ho dovuto anche impostare altezze di dimensione del contenuto uguali per UIScrollViews sia parentali che nidificate per rendere UIScrollView nidificato per lo scorrimento verticale. Fare solo "le stesse altezze dei fotogrammi del contenitore" come spiegava Dylan non era abbastanza:

Problemi correlati