【问题标题】:How do I enable collectionView paging over a panGestureRecognizer如何通过 panGestureRecognizer 启用 collectionView 分页
【发布时间】:2018-02-19 08:32:43
【问题描述】:
我目前有一个 panGesture 识别器附加到一个也启用了分页的 collectionView。
问题是 panGesture 覆盖了分页。如果可能的话,我希望在 panGesture 之前执行分页。
我正在使用 panGesture 垂直移动 collectionView 并通过分页水平滑动单元格。
【问题讨论】:
标签:
ios
swift
uicollectionview
paging
uipangesturerecognizer
【解决方案1】:
我们可以在没有 PanGesture 的情况下通过检测 collectionview 的滚动来实现相同的功能。
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)!
}
【解决方案2】:
我最终做的是遍历collectionView的gestureRecognizers:
if let gestureRecognizers = collectionView.gestureRecognizers {
for gestureRecognizer in gestureRecognizers {
print(gestureRecognizer)
}
}
通过打印每一个并阅读描述,很明显分页是由 index 1 处的gestureRecognizer (UIScrollViewPagingSwipeGestureRecognizer) 完成的
然后我用了:
myPanGesture.require(toFail: collectionView.gestureRecognizers![1])
它有效,但在我的使用中有些滞后。我想这在其他情况下可能会有所帮助,所以我发布了我的解决方案。