UIScrollView决定拖动和点击

时间:2011-11-28 19:50:44

标签: objective-c ios uiscrollview uigesturerecognizer

我正在尝试在UIScrollView内的视图上确定单个选项卡。问题是UIScrollview捕获了所有手势。

到目前为止我尝试了什么: 我在UIScrollView中覆盖了以下方法:

-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
    UITouch *touch = [touches anyObject];
    if([touch tapCount]== 2) return YES;

    return NO;
}

这很好用,我现在可以在我的UIView上到达UITapGestureRecognize,遗憾的是我只能检测到双击,因为[touch tapCount] == 1总是被调用(在UIScrollView中拖动或缩放)。但实际上UIScrollview不需要“单击功能”

有没有办法在此方法中决定拖动(滚动或缩放)和单击?我找不到..

-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view

提前致谢 FABI

3 个答案:

答案 0 :(得分:6)

如果触摸不滚动滚动视图,听起来你只想要点击识别器成功。这非常简单,因为滚动视图使用平移手势识别器进行滚动。在iOS 5上,您可以这样做:

[self.tapRecognizer requireGestureRecognizerToFail:self.scrollView.panGestureRecognizer];

如果您想支持旧版本的iOS,则必须执行此操作:

for (UIGestureRecognizer *recognizer in self.scrollView.gestureRecognizers) {
    if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]])
        [self.tapRecognizer requireGestureRecognizerToFail:recognizer];

答案 1 :(得分:0)

touchesShouldBegin:是UIView上的委托方法。它不是UIGestureRecognizer的一部分。

您需要创建一个UITapGestureRecognizer,设置您想要触发识别器的点击次数并将其添加到您的视图中。

Here is the documentation for UITapGestureRecognizer

答案 2 :(得分:0)

我假设你的意思是“单击” - 你的scrollView属于绑定到你的控制器的UIView。将点击手势识别器分配给该UIView。它首先选择所有手势,然后传递给它不感兴趣的手势。