通过阅读UIGestureRecognizer类参考,暗示API将为您处理触摸和手势控制的优先级,确保touchesBegan在视图上不调用您的和相关方法,除非手势识别器首次失败:
窗口将触摸事件传递给手势识别器,然后将其传递到连接到手势识别器的经过测试的视图.通常,如果手势识别器分析多触摸序列中的触摸流并且不识别其手势,则视图接收全部触摸.如果手势识别器识别其手势,则取消视图的剩余触摸.
我在我的视图中添加了一个滑动手势,它正在工作.通过一些日志记录,当我进行单次滑动时,该方法会报告.但是,我的touchesBegan方法也通过其日志报告,尽管该touchesCancelled方法正如预期的那样也接收消息.
我希望并期望手势能够识别以防止touchesBegan或被touchesMoved召唤.
所以我的问题是:对于手势识别器实际上根据其状态延迟触摸,是否需要额外的设置?文档没有必要提出任何其他建议.
我的设置很简单:
swipeUpTwoFinger=[[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doubleSwipeUp:)]autorelease];
swipeUpTwoFinger.direction=UISwipeGestureRecognizerDirectionUp;
swipeUpTwoFinger.numberOfTouchesRequired=2;
[self addGestureRecognizer:swipeUpTwoFinger];
Run Code Online (Sandbox Code Playgroud)
我也尝试过这种测试,以确保识别器已与处理之前失败的touchesBegan(这个测试应该不会,如果你相信什么文档上面说是必要的),但touchesBegan仍在处理此试验后,在日志行:
if (swipeUpTwoFinger.state==UIGestureRecognizerStateFailed)