• 事件传递/处理过程


    一、事件传递的过程
    1.用户手指触摸屏幕,产生一个事件对象

    2.系统会将这个事件对象添加到事件队列(先进先出)中

    3.由UIApplication取出事件队列中的事件对象进行处理

    4.UIApplication会先将事件对象传递给主要的UIWindow
    (当然,要先检测UIWindow是否能够接收和传递事件)

    5.UIWindow会遍历所有的子控件,看看触摸点有没有落在某个子控件上面:
    1> 如果触摸点没有落在子控件上,那么就由UIWindow直接处理这个事件,事件传递完毕
    2> 如果触摸点落在子控件v1上,那么就再遍历v1的所有子控件,重复前面5的步骤
    (是从最后一个子控件开始遍历)

    6.最终,会获取一个最适合处理事件的UIView对象,就会给这个UIView对象发送相应的消息,也就是调用UIView的相应方法(touchesBegan...),通知它被触摸了

    二、事件处理的过程
    (也就是touchesBegan、touchesMoved、touchesEnded方法内部的处理过程)
    // 如果覆盖了这3个方法,而且没有调用回super的方法,就会忽略父类的默认做法
    1.默认做法:
    1> 将事件对象顺着响应者链条往上传递,最终会传递给UIApplication
    2> 如果中间链条断了,就不会继续往上传递

    2.覆盖了父类的默认做法,就不会将事件往上传递,响应者链条就会断掉

    3.事件的传递和事件的处理,基本上是互为逆过程

  • 相关阅读:
    ios 数据类型转换 UIImage转换为NSData NSData转换为NSString
    iOS UI 12 block传值
    iOS UI 11 单例
    iOS UI 08 uitableview 自定义cell
    iOS UI 07 uitableviewi3
    iOS UI 07 uitableviewi2
    iOS UI 07 uitableview
    iOS UI 05 传值
    iOS UI 04 轨道和动画
    iOS UI 03 事件和手势
  • 原文地址:https://www.cnblogs.com/yyh123/p/3339960.html
Copyright © 2020-2023  润新知