当我们创建一个横向滑动的collectionView的时候,会发现系统的侧滑返回功能失效了。下面就来分析一下这个问题产生的原因以及解决方案
首先解释下失效的原因
由于UICollectionView继承自UIScrollView,UIScrollView内部有个
panGestureRecognizer
的手势属性,当我们滑动scrollView的时候,其实就是panGestureRecognizer
在起作用,所以当我们的滑动手势在scrollView上时,就不会调用系统的侧滑返回手势
解决方案
要想解决侧滑返回失效的问题,我们只需要在合适的时候,将scrollView内部的
panGestureRecognizer
手势关闭即可
解决步骤
// 1.设置代理
self.panGestureRecognizer.delegate = self;
// 2.实现方案
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
// 开启侧滑返回功能
// 是否为平移手势
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
// 获取平移方向
CGPoint translation = [(UIPanGestureRecognizer *)gestureRecognizer translationInView:gestureRecognizer.view];
// 向右滑动 && scrollView滑动到最左侧
if (translation.x >= 0 && self.contentOffset.x <= 0) {
return NO;
}
}
return YES;
}