我目前有一个 panGesture 识别器附加到也启用了分页的 collectionView。
问题是 panGesture 覆盖了分页。 如果可能的话,我希望在 panGesture 之前执行分页操作。
我使用 panGesture 垂直移动 collectionView,并使用分页水平滑动单元格。
我们可以通过检测 CollectionView 的滚动来实现相同的功能,无需 PanGesture 。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let visibleRect = CGRect(origin: collectionViewCreateNewGame.contentOffset, size: collectionViewCreateNewGame.bounds.size)
let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
let indexPath = collectionViewCreateNewGame.indexPathForItem(at: visiblePoint)
pageControl.currentPage = (indexPath?.row)!
}
我最终做的是迭代collectionView的gestureRecognizers:
if let gestureRecognizers = collectionView.gestureRecognizers {
for gestureRecognizer in gestureRecognizers {
print(gestureRecognizer)
}
}
通过打印每一个并阅读描述,很明显分页是由索引 1 处的gestureRecognizer(UIScrollViewPagingSwipeGestureRecognizer)完成的
然后我用了:
myPanGesture.require(toFail: collectionView.gestureRecognizers![1])
它可以工作,但在我的使用中有些滞后。 我想这在其他情况下可能会有所帮助,所以我发布了我的解决方案。