我正在使用集合视图。 虽然directionLockEnabled可以设置为YES,但仍然可以启用对角线滚动。
所以我在某个地方找到了解决方案:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
self.offset = self.collectionView.contentOffset;
}
// control scroll to only horizontal & vertical
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat deltaX = ABS(self.offset.x - self.collectionView.contentOffset.x);
CGFloat deltaY = ABS(self.offset.y - self.collectionView.contentOffset.y);
if (deltaX != 0 && deltaY != 0) {
if (deltaX >= deltaY) {
self.collectionView.contentOffset = CGPointMake(self.collectionView.contentOffset.x, self.offset.y);
}
else {
self.collectionView.contentOffset = CGPointMake(self.offset.x, self.collectionView.contentOffset.y);
}
}
}
然而副作用是当我用x,y>调用时0
[self.collectionView setContentOffset:CGPointMake(x, y) animated:animated];
由于上面的代码块,它根本不滚动。
如何处理?
答案 0 :(得分:1)
在Swift中禁用手动对角线滚动:
df["`A.p1`"] + df["`B.p1`"]
答案 1 :(得分:0)
好的我搞清楚了...... scrollView.dragging可以区分手动滚动或自动滚动...
答案 2 :(得分:0)
你可以做
collectionView.isScrollEnabled = false
它将禁止用户滚动,但是您可以使用来以编程方式滚动
collectionView.scrollToItem(at:at:animated:)