UIScrollView决定拖动和点击

我试图确定在一个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并不需要“单抽头function”

有没有办法来决定之间的拖动(滚动或缩放)和一个单一的水龙头在这种方法? 我无法find它..

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

在此先感谢Fabi

这听起来像你只想轻敲识别器成功,如果触摸不滚动滚动视图。 这很容易,因为滚动视图使用平移手势识别器进行滚动。 在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]; 

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

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

这里是UITapGestureRecognizer的文档

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