如何在一个UIView手势识别和触摸优先(How to prioritize gesture rec

2019-08-20 04:27发布

从阅读UIGestureRecognizer类引用它被暗示的API将处理触摸和手势控制你的优先次序,确保您touchesBegan和相关方法不叫上视图,除非手势识别也第一次尝试失败:

一个窗口提供触摸事件的手势识别它将它们递送到连接到手势识别命中测试的前视图。 一般地,如果一个手势识别分析触摸的流中的多触摸序列和不承认其姿态,视图接收触摸的满装。 如果一个手势识别器识别出它的姿态,视图的剩余触摸被取消。

我添加了一个滑动手势,以我的观点,这是工作。 通过一些记录,当我做单刷的方法,这样的报告。 然而,我touchesBegan方法通过它的日志报告,尽管该touchesCancelled方法,符合市场预期,也接收消息。

我想,和期待,手势识别,防止touchesBegantouchesMoved被调用。

所以我的问题是:基于其状态的手势识别到实际上延迟接触,是否有额外的设置必要吗? 该文档不建议任何东西是必要的。

我的设置是简单的:

 swipeUpTwoFinger=[[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doubleSwipeUp:)]autorelease];
swipeUpTwoFinger.direction=UISwipeGestureRecognizerDirectionUp;
swipeUpTwoFinger.numberOfTouchesRequired=2;
[self addGestureRecognizer:swipeUpTwoFinger];

我也尝试过这种测试,以确保识别器未能与处理前touchesBegan (如果你相信什么文档上面说这个测试应该没有必要),但touchesBegan仍在处理此试验后,在日志行:

if (swipeUpTwoFinger.state==UIGestureRecognizerStateFailed)

Answer 1:

这听起来像你需要: swipeUpTwoFinger.delaysTouchesBegan = YES;



文章来源: How to prioritize gesture recognizers and touches in a UIView