在 uiscrollview 中检测 toucesbegin

Posted

技术标签:

【中文标题】在 uiscrollview 中检测 toucesbegin【英文标题】:Detecting toucesbegan in uiscrollview 【发布时间】:2013-06-12 20:33:16 【问题描述】:

我在水平滚动视图中添加了垂直滑动。该位工作正常,但我想在用户触摸它时点亮滚动视图上方和下方的目标,以指示向上或向下滑动会导致动作。

我怎样才能做到最好?

使用敲击探测器不会切断它,因为它只会在手指抬起时触发。

使用具有短触发延迟的长按检测器也不起作用,因为它似乎会禁用所有其他手势识别器。

【问题讨论】:

【参考方案1】:

您可以继承 UIScrollView 并覆盖这些方法:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

【讨论】:

好答案,但我发现一个我认为工作量少一点的答案......见下文。【参考方案2】:

Grr...为什么这总是发生 - 就在你放弃之后,答案就来了!

是的,长按检测器是检测手势开始和结束的方法,但是您需要在合适的对象中实现 UIGestureRecognizerDelegate 协议,并将其设置为所有手势识别器的委托,然后实现此方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
    return YES;

这可以防止长按检测器覆盖所有其他手势识别器。

【讨论】:

以上是关于在 uiscrollview 中检测 toucesbegin的主要内容,如果未能解决你的问题,请参考以下文章

在 UIScrollView 中检测长按

在 UIScrollView 的子类中检测滚动

检测用户何时将手指从 UIScrollView 上移开

UIScrollView 检测点击

在 UIScrollView 中检测“向上”UIGesture

UIScrollView 检测滚动