美文网首页iOS
手势和响应链

手势和响应链

作者: 汤志强 | 来源:发表于2019-12-14 09:37 被阅读0次

先说几条结论:

1. 系统首先根据hit-test方法,找出最佳响应者,建立响应链。

2. UIResponder 默认响应是会将事件传给nextResponder,如果有响应者处理了这个事件,那么就会阻断事件的继续传递。

3.如果一个View被触摸, 先去从最佳响应者开始去遍历响应链,

3.1 如果响应链上发现有手势可以响应:

a 如果最佳响应者是UIControl本身和子类,

      a1 该手势不是在UIControl身上,

           则执行UIControl的sendTarget:withAction:方法,否则执行手势,且该手势独占触摸事件,并且调用touch:Cancel方法取消向响应链的传播。

      a2 该手势是在UIControl身上,则执行该手势。不执行sendTarget:withAction:方法。

b 如果最佳响应者不是UIControl本身和子类,

        b1 执行手势,且该手势独占触摸事件,并且调用touch:Cancel方法取消向响应链的传播。

3.2 如果响应链上发现没有手势可以响应:则执行touch相关的事情和sendTarget:withAction:等方法,一旦有相关的方法被执行,则不会去调用super touch等方法,取消事件向上传递。否则让下一个响应者进行处理。

4. 其中UIControl和UIScrollView比较特殊。

UIControl 默认能够响应事件,会阻断事件沿着响应链传递。

UIScrollView 默认添加了pan 和 pinch手势,UItableViewCell能够响应点击是调用了touchBegin等方法中实现的。

5.另外可以设置手势的相关属性,控制View是否执行touch:Cancel方法,保证2者都生效。

6. 常见的例子,见下文的链接。

以上结论,纯属个人总结,如有不正确之处欢迎指正。

事件传递和响应链

相关文章

  • 手势和响应链

    先说几条结论: 1. 系统首先根据hit-test方法,找出最佳响应者,建立响应链。 2. UIResponder...

  • 响应链与手势

    手势冲突与响应链的关系。手势优先级更高。

  • 响应者链和手势

    一、事件传递 1、从事件发生到其处理的对象,传递要经过特殊的一段过程,当用户点击设备屏幕时,iOS捕捉到一系列的触...

  • iOS 手势和响应链

    大佬的文章:https://juejin.cn/post/6894518925514997767[https://...

  • 手势 & 响应链

    1 事件产生与传递 目的:找到可能的处理事件的Responder。传递顺序,依赖于视图树,从树根到树叶。 1.1 ...

  • IOS手势

    [TOC] ## IOS****手势 学习ios手势,先要了解响应链,ios中只要继承UIResponse对象的都...

  • iOS响应链和手势总结

    继承关系 UIResponder 继承关系图只有继承了UIResponder的对象才能接受并处理事件 事件传递 U...

  • iOS响应链和控件手势

    1. 找到第一响应者,从视图最底层UIWindow到根视图和其子视图。通常通过hitTest:withEvent和...

  • 触摸,响应链,手势

    1、在iOS上,事件有多种形式 2、UIView不接收触摸事件的三种情况 二、事件处理基本方法 1、一个或多个手指...

  • 手势与响应链

    写了一个简单Demo,需要通过控制台查看打印信息。 响应链 这张图是用来说明响应链如何工作的。在HitTest已经...

网友评论

    本文标题:手势和响应链

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