手势的响应与否

问题

在一个横向的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;
}

可能还有很多种别的方式实现这个需求,可以多多尝试。但我觉得这应该是一种比较简单的方式了。

你可能感兴趣的:(手势的响应与否)