事件响应链

作者: 伊蕊飘零 | 来源:发表于2016-07-16 00:09 被阅读79次

事件响应链。包括点击事件,画面刷新事件等。在视图栈内从上至下,或者从下之上传播. 可以说点事件的分发,传递以及处理。具体可以去看下touch事件这块。
1> 首先解释响应者链的概念
UIResponder类,是UIKIT中一个用于处理事件响应的基类。窗口上的所有事件触发,都由该类响应(即事件处理入口)。所以,窗口上的 View及控制器都是派生于该类的,例如UIView、UIViewController等。调用UIResponder类提供的方法或属性,我们就可以捕捉到窗口上的所有响应事件,并进行处理。
响应者链条是由多个响应者对象连接起来的链条,其中响应者对象是能处理事件的对象,所有的View和ViewController都是响应者对象,利用响应者链条能让多个控件处理同一个触摸事件.

主循环 捕获 了用户的点击事件 : 它要做事件分发 --> 找到最适合处理这个事件的view寻找的链条: 首先找UIApplication --> UIWindow --> RootViewController --> View 到view这个层级的时候 会遍历他所有的子view (按照 倒序去遍历 --> 从最后添加的子view开始) 通过下面两个方法来进行查找

// 返回最适合处理事件的view
     - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
  内部会自动调用 pointInside 这个方法, 做判断
                                      return [super hitTest:point withEvent:event];

}
 // 检测 点击的位置是否在 这个view上
              - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
                     return [super pointInside:point withEvent:event];
}

找到最合适处理该事件view之后, 就会查找 处理事件的方法

2>事件传递机制
如果当前view不能处理当前事件,那么事件将会沿着响应者链(Responder Chain)进行传递,知道遇到能处理该事件的响应者(Responsder Object)。

  1. 接收事件的initial view如果不能处理该事件并且她不是顶层的View,则事件会往它的父View进行传递。
    2).initial view的父View获取事件后如果仍不能处理,则继续往上传递,循环这个过程。如果顶层的View还是不能处理这个事件的话,则会将事件传递给它们的ViewController,
    3). 如果ViewController也不能处理,则传递给Window(UIWindow),此时Window不能处理的话就将事件传递UIApplication,最后如果连Application也不能处理,则废弃该事件

相关文章

  • iOS 响应链

    iOS开发 - 事件传递响应链iOS 响应者链,事件的传递事件传递之响应链Cocoa Touch事件处理流程--响...

  • UIControl && UIGestureRecognizer

    事件传递和响应链 一. 事件传递 二.响应链 响应链: 三.UIGestureRecognizer 四.cance...

  • 深入浅出iOS事件机制

    深入浅出iOS事件机制事件传递:响应链事件传递响应链

  • 响应链和事件分发

    什么是响应链和事件分发: 响应链:由响应者对象构成链状结构,能够响应点击、拖拽等事件 事件分发:屏幕捕捉到触摸事件...

  • IOS开发 事件响应链

    本节学习内容: 1.事件响应链的概念 2.事件响应链的传递机制 3.事件响应链的应用 响应顺序 Subview>M...

  • iOS知识收集

    1. 响应者链 1.1 Cocoa Touch事件处理流程--响应者链 1.2 事件传递之响应链 多线程 http...

  • 事件的响应链与传递链

    iOS事件链有两条:事件的响应链;Hit-Testing事件的传递链 响应链:由离用户最近的view向系统传递。i...

  • iOS 中事件的响应链和传递链

    iOS事件链有两条:事件的响应链;Hit-Testing事件的传递链 响应链:由离用户最近的view向系统传递。i...

  • iOS 中事件的响应链和传递链

    iOS事件链有两条:事件的响应链;Hit-Testing事件的传递链 响应链:由离用户最近的view向系统传递。i...

  • 响应链

    iOS事件响应链中Hit-Test View的应用从iOS的事件响应链看TableView为什么不响应touche...

网友评论

    本文标题:事件响应链

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