通过阅读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];
我还尝试了此测试以确保识别器在处理之前失败touchesBegan
(如果您相信上面的文档所说的话,则不需要此测试)但是在touchesBegan
此测试之后仍在处理日志行:
if (swipeUpTwoFinger.state==UIGestureRecognizerStateFailed)