5

可能重复:
如何为 UIScrollView 启用方向锁定?

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

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

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

4

1 回答 1

6

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

  1. 设置 directionalLockEnabled = YES
  2. 将 UIScrollView 包裹在另一个向前触摸的视图中(因为我们将修改滚动视图的框架)
  3. 将 UIScrollView 的框架高度设置为 1(为了在处理水平滚动时最小化垂直对齐)
  4. 检测当前滑动的方向(in scrollViewDidScroll:
  5. 如果 contentOffset 的 x 发生了变化,则设置 pagingEnabled = YES
  6. 如果只有 y 的 contentOffset 发生了变化,则设置 pagingEnabled = NO

这将模拟您想要的场景。如果您水平滑动页面将捕捉 - 由于成名高度设置为 1,垂直捕捉将最小化。
仅垂直滑动时,滚动视图将自由滚动。

于 2012-05-07T09:57:35.233 回答