我试图适当地禁止在具有分页功能的水平CollectionView上向左滚动。我解决了禁用向左滚动,同时仍然允许向右滚动的问题,代码如下:
var oldX: Float = 0.0
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if backScrollEnabled == false {
if Float(scrollView.contentOffset.x) < oldX {
scrollView.contentOffset = CGPoint(x: CGFloat(oldX), y: scrollView.contentOffset.y)
}
else {
oldX = Float(scrollView.contentOffset.x)
}
} else {
// Don't do anything because backScrollEnabled is true
}
}
但是,即使在降低速度时,在我的CollectionView中也可能会有轻微的“过度滑动/拖动”。这会导致用户滑动通过该单元格的适当终点,该终点是collectionView框架的整个宽度和高度的中心。 没有上述代码,如果collectView传递了几个像素,它将把indexPath的单元格捕捉回到框架内的完美中心。
我需要上面的代码来允许该摆动空间(例如50px)在此动画过程中向左移动。这是一个 Image Example