2

这是场景:

我有一个 scrollView 作为添加了 UIPanGestureRecognizer 的视图的子视图。平移手势仅适用于一个方向,比如说从左到右。

我想要实现的是:如果 scrollView.contentOffset.x == 0 并且用户从左到右平移我希望 PanGesture 工作,否则我想让 scrollView 像往常一样工作。

我试过了

  • 在滚动视图的超级视图上实现hitTest:withEvent:,我可以在其中检查 contentOffset,但没有关于手势方向的数据。
  • 在滚动视图中实现touchesShouldBegin:withEvent:inContentView:,但同样没有关于方向的数据。

问题似乎是时刻,如果我想在视图处理手势事件后进行这种检查,则没有机会取消它并将事件重新发送到另一个视图。

有解决方法吗?提前致谢!

4

1 回答 1

0

为您添加到超级视图并实现的 UIPanGestureRecognizer 设置一个委托

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { 
    if(scrollView.contentOffset.x != 0){
        return NO;
    }

    return YES;
}
于 2013-05-23T17:12:23.920 回答