如何覆盖 UICollectionView 中的 handlePan 选择器

How to override the handlePan selector in UICollectionView

在我的 tvOS 应用程序中,我正在尝试监听 UICollectionView 滚动的变化。经过研究,我发现集合视图本机接收一些手势识别器,其中一个带有选择器 handlePan:

的 UIPanGestureRecognizer
<UIScrollViewPanGestureRecognizer: 0x101a4c1a0; state = Possible; delaysTouchesEnded = NO; view = <UICollectionView 0x1020c5d00>; target= <(action=handlePan:, target=<UICollectionView 0x1020c5d00>)>>

在日志中,或在代码中:

myCollectionView.panGestureRecognizer

我想知道是否有办法将我的控制器添加为手势识别器的目标,或者覆盖 handlePan 方法。 我尝试实施 UIGestureRecognizerDelegate 但它没有让我访问 handlePan 方法。 也许我应该在集合视图上添加我自己的自定义 UIPanGestureRecognizer

UICollectionView 是 UIScrollView 的子类,因此您可以通过添加滚动视图委托来检测 collectionview 上的滚动变化。

Objective-C

// called on finger up if the user dragged. decelerate is true if it will continue moving afterwards
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

}

// called when scroll view grinds to a halt
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

}

Swift

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {

}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

}