检测视图上的触摸和多点触控手势,并将它们发送到正确的接收器

时间:2012-10-24 13:28:55

标签: ios xcode uiview uigesturerecognizer

我的观点面临着一个复杂的问题,我会尽量明确和具体,如果有什么不清楚,请说出来。

我有一个包含更大视图的ScrollView(ContentView)。我希望这个ScrollView使用两个(或更多)手指滑动滚动。在contentView中,我有几个名为barView的自定义视图实例。这些barview与uisliders类似,但有一些自定义。为了能够滑动这些barviews,我使用“touchesMoved”方法来跟踪触摸。但是每当我想使用多点触控滑动滚动视图时,它也会触发barviews上的方法。如何防止多点触控滑动操纵barviews?

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

您可以使用PanGestureRecognizers跟踪barViews上的触摸。设置时,请设置:

[panGestureRecognzer requireGestureRecognizerToFail:scrollViewSwipeGestureRecognizer]

这可确保只有当滚动视图上的滑动手势失败时,条形图视图上的gestureRecognizers才会触发。

或者,如果您的scrollView仅在使用2个手指时滚动,则可以将以下内容添加到barView的touchesMoved方法中:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    if ([touches count] > 1)
        return;
    /...
}