单向UIScrollView分页

时间:2012-05-07 07:55:52

标签: ios uiscrollview

  

可能重复:
  How do I enable directional lock for a UIScrollView?

有没有办法让UIScrollView执行分页,例如只是水平而不是垂直滚动?

换句话说,我希望我的滚动视图在水平滚动时捕捉到页面边界,并在垂直移动时自由滑动。

当然,简单的解决方案是使用两个UIScrollViews,每个方向一个,但在我的情况下这不是一个可行的解决方案。

1 个答案:

答案 0 :(得分:6)

如果水平方向有任何移动,假设您总是想要捕捉,只有在水平偏移没有改变时才自由滚动。

  1. 设置directionalLockEnabled = YES
  2. 将UIScrollView包装在转发触摸的另一个视图中(因为我们将修改scrollview的fram`e)
  3. 将UIScrollView的框架高度设置为1(以便在处理水平滚动时最小化垂直对齐)
  4. 检测当前滑动的方向(scrollViewDidScroll:
  5. 如果contentOffset的x已更改,则设置pagingEnabled = YES
  6. 如果仅更改了contentOffset的y,则设置pagingEnabled = NO
  7. 这将模拟您想要的场景。如果您水平滑动页面将会捕捉 - 由于名气高度设置为1,垂直捕捉将会很小 仅垂直滑动时,滚动视图将自由滚动。