2012-05-07 47 views
3

可能重複:
How do I enable directional lock for a UIScrollView?的UIScrollView尋呼在單一方向

有一種方法,以具有一個UIScrollView例如執行尋呼只有水平方向而不是垂直滾動時?

換句話說,我希望我的滾動視圖在水平滾動時捕捉頁邊界,並在垂直時自由滑動。

當然,這個微不足道的解決方案是使用兩個UIScrollViews,每個方向都有一個,但在我的情況下這不是一個可行的解決方案。

+0

是的,這是可能的。 http://stackoverflow.com/questions/861986/how-do-i-enable-directional-lock-for-a-uiscrollview –

+0

這隻能防止在某個方向滾動。我想允許在所有方向上滾動,但只能在水平方向上執行捕捉到的邊界 – user1204271

+0

@casperone我不明白這是如何重複標記的問題。這是關於分頁。另一個關於方向鎖。 –

回答

5

假設您總是希望捕捉水平方向上的任何移動,並且只有在水平偏移沒有改變時才能自由滾動。

  1. 集directionalLockEnabled = YES
  2. 包裹的UIScrollView在另一視圖中轉發觸摸(如我們將修改滾動視圖的fram`e)
  3. 設置UIScrollView的框高度爲1(爲了最小化垂直捕捉處理水平滾動)時
  4. 檢測當前輕掃的方向(scrollViewDidScroll:
  5. 如果x contentOffset的已改變,則設置pagingEnabled = YES
  6. 如果只有y的contentOffset已更改,然後設置pagingEnabled =否

這將模擬您想要的方案。如果您水平滑動,頁面將會捕捉,並且垂直捕捉將由於名望高度設置爲1而最小化。
僅在垂直滑動時,滾動視圖將自由滾動。