正如问题标题所示,是否可以仅在一个方向上启用UIScrollView
中的分页?
我有一个UIScrollView
在x和y方向滚动,但我只想要一个方向分页,这可能吗?
我脑海中唯一的解决方案是在第一个内部使用另一个UIScrollView
,这是唯一的解决方案吗?
答案 0 :(得分:0)
您应该实施scrollViewWillBeginDecelerating delegate method of
UIScrollview`。
您应该在当前存储当前content offset
。
然后比较您的滚动浏览的当前y
的{{1}}和最后与content offset
存储的内容。如果当前content offset
更大,则滚动方向为y
,如果上次存储的up side
更大,则方向为y
。现在,如果您希望down side
仅对paging
产生影响,那么当您检测到up direction
将新up direction
设置为content offset
时。例如,如果当前scrollview
偏移量为y
,则将其设置为0
。
您可以参考this so post获取一些指导来管理我所说的内容!
答案 1 :(得分:0)
这是我解决的方法:
var lastOffsetY: CGFloat = 0
var lastOffsetX: CGFloat = 0
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y != lastOffsetY {
lastOffsetY = scrollView.contentOffset.y
scrollView.isPagingEnabled = false
} else {
scrollView.isPagingEnabled = true
}
if scrollView.contentOffset.x != lastOffsetX {
lastOffsetX = scrollView.contentOffset.x
scrollView.isPagingEnabled = true
} else {
scrollView.isPagingEnabled = false
}
}
这只会使其在水平方向上可分页。对于垂直方向,只需翻转true / false值即可。