美文网首页
iOS一个手势动作被多个UIGestureRecognizer识

iOS一个手势动作被多个UIGestureRecognizer识

作者: 长鲜 | 来源:发表于2017-08-26 02:22 被阅读0次

    假设你现在有三个View

    C层

    B层

    A层

    View属于三层,ABC, A最底层

    存在三个层次,都是父子关系。

    B 是 A 的子视图,
    C是 A 的子视图。

    直接上个图吧

    图片.png

    最底下的红色就是A视图

    现在给三个视图都绑定一个UIPangestureRecognizer
    那么,你在任何视图里面滑动的时候,你都会触发该视图绑定的recognizer初始化时的目标方法

    现在你如果想在触发C视图手势的同时,触发A的视图呢?
    可以的 需要两步
    第一步,设置PanA的delegate
    第二步,实现

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
        return YES;
    }
    

    这样子,你在C 视图里面拖动的时候,A和C的手势都会被触发。
    同时,你如果在B视图里面拖动的时候,AB的手势也会被触发。

    本来一个手势发生,如果多个视图中有识别器可以捕获他,他会被视图层级属于最低的(最后添加的)识别器处理,而你只要把这个返回值设置为YES,那么只要有对应的手势发生在这个视图上,无论有没有其他的视图要识别这个事件。

    但这里有个限制,就是最多只能同时一个手势被两个视图识别,如果你想一个手势被三个视图识别,那么你需要把上面的代理实现两遍,至于为什么,可以想一想,或者用手机去模拟一下,网上关于这方面的文章不多,这个跟那个 传递链和响应者链的 关系不太一样。。

    相关文章

      网友评论

          本文标题:iOS一个手势动作被多个UIGestureRecognizer识

          本文链接:https://www.haomeiwen.com/subject/qaxmdxtx.html