美文网首页
iOS: 事件响应链

iOS: 事件响应链

作者: iCoreMan | 来源:发表于2016-11-02 20:05 被阅读64次

这个问题啊经常问,网上资料非常多,但是自己老是答不好:

响应链:响应事件的一系列响应者组成的一个层次结构。

事件,有三种:

1Touch Events,点击事件

2、Motion Events,移动事件,比如监听加速器、陀螺仪 产生的事件;

3、Remote Control Events,远程控制事件, 比如耳机,可以控制你的音量、播放音乐。

其次,谁来响应事件?UIResponder,响应者。都有谁?UIView、UIViewController、UIApplication,Window继承View,直接或间接继承至UIResponder。

我们经常遇到的呢是第一种事件,后面两种不常用。事件产生后,我们要找 First Responder,后面两种的 First Responder 由用户指定, 第一种由系统自己找, 当然我们可以重写UIResponder 里面的方法来设置 First Resoinder。应用场景:进入登录页面,键盘自动弹出来,把UITextField设置为 First Resoinder就可以了。

找 First Responder: self.view开始找,- pointInside判断是否在身上,在,调用 - hitTest,递归子控件,调用这两方法;如果没有子控件或子控件 - pointInside 返回 NO 或者 - hitTest返回 nil,则父控件为First Responder。

事件传递: UIResponder 有个 nextResponder ,事件传递就是从First Responder沿着Responder Chain传递到nextResponder,直到事件被处理或者舍弃。

常见的Responder传递方向有:

Initial View->Parent View->ViewController->Window->Application

如果最终传递到Application对象,依然没有对事件作出响应,事件就会被舍弃掉。

通常来说,子视图的nextResponder即为其父视图。如果子视图直接依附于ViewController,则该子视图的nextResponder即为其依附的ViewController

相关文章

  • iOS 响应链

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

  • 深入浅出iOS事件机制

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

  • 二、事件传递链和响应者链

    iOS触摸事件详解iOS开发-事件传递响应链 响应者链 UIResponser包括了各种Touch message...

  • 响应链

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

  • iOS响应者链

    参考好文 iOS开发-事件传递响应链,用运行时分析 iOS事件传递:响应者链[译] http://www.jian...

  • 事件的响应链与传递链

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

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

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

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

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

  • iOS中对于响应链的理解

    对于响应链的理解: 在IOS中,有响应者链对事件进行响应,所有的响应类都是UIResponder的子类,响应者链是...

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

    iOS 事件的主要由:响应连 和 传递链 构成。一般事件先通过传递链,传递下去。响应链,如果上层不能响应,那么一层...

网友评论

      本文标题:iOS: 事件响应链

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