有时我们添加的UIGestureRecognizer识别不出来,分析原因至少有以下三种可能:
- - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
- - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
- - (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer *)preventingGestureRecognizer;
对应序号,分别解释:
- 一次手势动作,有可能触发多个手势时,这个接口询问这些手势能否并存。
- eg:一个横向的scrollview A,内有个竖向的自scrollview B,一次斜的swipe手势(本意是想横滑),可能只响应B的竖向滑动,你期望的A的横向却没发生。
- 解决方案:在该接口中识别你的手势,并return YES。注意不要扩大化了。
- 手势可能发生的条件,比如某些特殊情况下,不想让此手势发生,就return NO了。
- 有的手势之所以没发生,是因为它被别的手势阻止了。典型的如UITapGestureRecognizer手势,一个UITapGestureRecognizer永远不会阻止一个更高tap次数的UITapGestureRecognizer.