3

我在 a 上使用 aUIPanGestureRecognizer在 aUIViewUICollectionViewCell。我正在使用该translationInView方法来获取沿 X 轴的平移并UIView左右滑动。它工作正常,但现在如果我的手指在单元格上,我无法在 CollectionView 中上下滚动。有没有办法让PanGestureRecognizer垂直滚动到UICollectionView?

我正在尝试复制 Reeder.app for iOS 中看到的滑动。

4

1 回答 1

8

一旦UIPanGestureRecognizer您的触摸中的激活UIView不再通过响应者链转发,因此您UICollectionView将不再接收触摸。

您可以尝试将您设置UIView为您的代表,UIPanGestureRecognizer并放置是否UIPanGestureRecognizer应该激活的逻辑。你必须在你的 UIView 中实现委托的方法:

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;

例如,使用下面的代码,如果视图的 y 轴上的速度大于 x 轴的速度,您会告诉它不要激活(因此将触摸发送到UICollectionView它下面)

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{

    UIPanGestureRecognizer *recognizer = (UIPanGestureRecognizer *)gestureRecognizer;
    CGPoint velocity =[recognizer velocityInView:self];
    if(abs(velocity.y)>=(abs(velocity.x))){
        return NO;
    }else return YES;

}

希望这会有所帮助。

于 2013-03-01T16:31:34.863 回答