问题
在一个横向的UICollectionView上加一个上滑删除元素的功能。那么我们首先想到的是在cell上加一个UIPanGestureRecognizer。
但是,添加pan手势后会发现,这个手势会影响UICollectionView的横向滚动事件
解决思路
控制添加的pan手势的触发时机
手势开始前,只有在Y轴的速率大于在X轴的速率才响应添加的pan手势,否则,就会响应UICollectionView的横向滚动手势
核心代码
#pragma mark - UIGestureRecognizerDelegate
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
if([gestureRecognizer isEqual:self.panGR]) {
UIPanGestureRecognizer *gr = (UIPanGestureRecognizer *)gestureRecognizer;
CGPoint point = [gr velocityInView:self];
ZYLog(@"velocityInView %@", NSStringFromCGPoint(point))
if (abs(point.x) >= abs(point.y)) {
return NO;
}
}
return YES;
}
可能还有很多种别的方式实现这个需求,可以多多尝试。但我觉得这应该是一种比较简单的方式了。