2012-09-25 68 views
1

我在垂直UIScrollView內的水平UIScrollView內有一個多向UIScrollView。當我達到最內層scrollView的水平內容限制時,包含水平滾動視圖就像我想要的那樣開始滾動。UIScrollView內的UIScrollView在UIScrollView內

但是,當我達到最內層scrollView的垂直內容限制時,我沒有在頂層垂直scrollView上得到任何操作。

如果所有的垂直內容在最內層都是可見的(所以沒有垂直滾動是可能的),那麼頂層垂直滾動視圖接管罰款。任何線索如何解決這個問題?

如果我在垂直scrollView中嵌入照片分頁scrollView,我會得到與Apple「PhotoScroller」示例代碼相同的行爲。如果照片沒有放大,那麼水平和垂直滾動視圖都可以使用。如果照片放大,但平移停止,因爲它已達到水平或垂直限制,則只有水平滾動視圖起作用。

這是使用實現照片分頁的舊版本示例代碼作爲UIScrollView而不是UIPageViewController。使用當前的UIPageViewController版本,當照片放大時無法進行分頁。

回答

0

爲了回答我自己的問題,我使用了gestureRecognizerShouldBegin:delegate來確定在平移手勢開始時最內側的scrollView是否位於邊界處。如果是這樣,我回應了shouldRecognizeSimultaneouslyWithGestureRecognizer: 委託來啓用內部scrollView和垂直scrollView上的UIPanGestureRecognizer。這允許一個手勢同時滾動。然後,我在兩個scrollView上重載setContentOffset以禁止滾動錯誤的滾動。

我想一個更好的答案很可能是更換UIPanGestureRecognizer上時,在邊界開始,拖過去的邊界抵消自身的自定義手勢識別器內的UIScrollView。但是,我無法讓它工作。

還不清楚爲什麼這個橫向版本自動工作。也許在UIScrollViewPanGestureRecognizer中有一些特殊情況處理來處理水平情況,或者與直接的superView交互。