美文网首页
事件传递

事件传递

作者: 高思阳 | 来源:发表于2019-01-09 23:15 被阅读4次
    事件传递流程 htTest实现 响应者链条

    左侧是单控制器,右侧是多控制器

    响应者链的事件传递过程总结如下:

    1.如果view的控制器存在,就传递给控制器处理;如果控制器不存在,则传递给它的父视图

    2.在视图层次结构的最顶层,如果也不能处理收到的事件,则将事件传递给window对象进行处理

    3.如果window对象也不处理,则将事件传递给 UIApplication对象

    4.如果UIApplication也不能处理该事件,则将该事件丢弃。

    响应链例子

    处理触摸事件

    响应者对象都是UIResponder类的实例,在处理特定类型的事件时,系统会调用响应者对象相应的方法去回应事件,响应者必须覆写实现相应的方法。为了处理触摸事件,响应者对象需要实现touchesBegan:withEvent:、touchesMoved:withEvent:和touchesEnded:withEvent:方法中的一个或者多个。

    UIKit确定触摸事件的第一响应者之后,如果这个响应者类覆写实现了touchesBegan:withEvent:、touchesMoved:withEvent:和touchesEnded:withEvent:方法中的一个或者多个,那么当触摸开始发生时,系统会调用响应者对象的touchesBegan:withEvent:方法去回应触摸事件。当触摸位置移动时,会调用响应者对象的touchesMoved:withEvent:方法去回应,当触摸结束时,会调用touchesEnded:withEvent:方法去回应。

    如果这几个方法一个都没有被实现,那么UIKit会沿着默认的响应者链去传递触摸事件。如果响应者链中有响应者实现了前述方法,那么该响应者对象就会去处理传递来的触摸事件。

    否则,该触摸事件就不会被处理。

    链接:https://www.jianshu.com/p/84c0ca05abc3

    相关文章

      网友评论

          本文标题:事件传递

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