UIScrollView决定拖动和点击

Fab*_*abi 1 objective-c uiscrollview uigesturerecognizer ios

我试图在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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
Run Code Online (Sandbox Code Playgroud)

在此先感谢Fabi

rob*_*off 6

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

[self.tapRecognizer requireGestureRecognizerToFail:self.scrollView.panGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

如果要支持旧版本的iOS,则必须执行以下操作:

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