UIScrollView单向分页滚动

5

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

是否有一种方法使UIScrollView执行分页,例如仅水平滚动而不在垂直滚动时执行分页?

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

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


是的,这是可能的。https://dev59.com/fnRA5IYBdhLWcg3wsgFP - Paul Peelen
1
这只能防止在特定方向上滚动。我想要允许在所有方向上滚动,但仅限于水平方向上的捕捉到边界。 - user1204271
1
@casperone 我不明白这个问题怎么会和标记的那个问题重复。这个问题是关于分页的,另一个则是关于方向锁定的。 - r-dent
1个回答

6

假设您总是希望在水平方向上有任何移动时都进行捕捉,只有当水平偏移量未更改时才进行自由滚动。

  1. 设置 directionalLockEnabled = YES
  2. 将 UIScrollView 包装在另一个视图中,该视图转发触摸(因为我们将修改 scrollview 的 frame)
  3. 将 UIScrollView 的 frame 高度设置为 1(以最小化处理水平滚动时的垂直捕捉)
  4. 检测当前滑动的方向(在 scrollViewDidScroll: 中)
  5. 如果 contentOffset 的 x 值已更改,则设置 pagingEnabled = YES
  6. 如果仅更改了 contentOffset 的 y 值,则设置 pagingEnabled = NO

这将模拟您想要的情况。如果您水平滑动页面将会捕捉 - 并且由于框架高度设置为 1,垂直捕捉将最小化。
当仅垂直滑动时,滚动视图将自由滚动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接