多个Gesture响应原理

<!--StartFragment





默认情况下,一个响应链上只能响应一个Gesture,不过每个Gesture都可以设置一个delegate,当某个gesture的代理方法shouldRecognizeSimultaneouslyWithGestureRecognizer返回YES时,如果这个gesture在当前的响应链上,那么这个gesture就会被响应,当然这个判断是在手势开始识别的时候做的,手势识别成功之后就不会去做这个判断了。


当一个gesture的shouldRecognizeSimultaneouslyWithGestureRecognizer返回YES时,如果这个gesture在响应链上,那么能够保证gesture能被响应到,但是如果shouldRecognizeSimultaneouslyWithGestureRecognizer返回NO,并不能保证这个gesture不被响应,因为其他gesture的delegate方法可能返回YES。


以下为实验结果,并未找到相应文档:


假设一条响应链上有三个手势,A、B、C,A为最近的一个手势(也就是默认情况下只相应A),那么当A的shouldRecognizeSimultaneouslyWithGestureRecognizer代理方法返回YES时,能够影响到B,即B手势可以被响应(即使是B的delegate方法返回NO,B手势也会被响应,因为受到A手势的影响),但C手势不能被响应。也就是说delegate方法返回YES时只能影响到它后面的一个手势。





<!--EndFragment