美文网首页
iOS响应者链

iOS响应者链

作者: 不掉头发的程序猿 | 来源:发表于2018-10-18 14:08 被阅读0次

每一个继承于UIResponder都是一个点,通过nextResponder来进行指向

其指向规则是:

UIView

如果 view 是一个 view controller 的 root view,nextResponder 是这个 view controller.

如果 view 不是 view controller 的 root view,nextResponder 则是这个 view 的 superview

UIViewController

如果 view controller 的 view 是 window 的 root view, view controller 的 nextResponder 是这个 window

如果 view controller 是被其他 view controller presented调起来的,那么 view controller 的 nextResponder 就是发起调起的那个 view controller

UIWindow

window 的 nextResponder 是 UIApplication 对象.

UIApplication

UIApplication 对象的 nextResponder 是 app delegate, 但是 app delegate 必须是 UIResponder 对象,并且不能使 view ,view controller 或  UIApplication 对象他本身.

 那么响应链是如何工作,正确找到应该响应该事件的响应者的?

说白了就是,当有touch事件来的时候,会从最下面的视图开始执行 hitTest:withEvent: ,如果符合成为响应者的条件,就会继续遍历它的 subviews 继续执行 hitTest:withEvent: ,直到找到最合适的view成为响应者。这里要注意几个点:

符合响应者的条件包括

touch事件的位置在响应者区域内

响应者 hidden 属性不为 YES

响应者 透明度 不是 0

响应者 userInteractionEnabled 不为 NO

遍历 subview 时,是从上往下顺序遍历的,即 view.subviews 的 lastObject 到 firstObject 的顺序,找到合适的响应者view,即停止遍历.

相关文章

  • iOS 响应链

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

  • iOS响应者链

    iOS响应者链

  • ios响应者链

    iOS 响应者链 字数418 阅读41 评论0 喜欢3 响应者链 响应者链是一个响应者的连接序列,事件或者动作消息...

  • iOS UI事件传递与响应者链

    iOS UI事件传递与响应者链 响应者链 响应者对象:继承自UIResponder的对象称之为响应者对象。UIAp...

  • 转载:响应者链工作原理

    响应者链 响应者链是由一个一个响应者组成的长链;响应者链定义了iOS中触摸事件的交互规则;如果hit-test检测...

  • 事件的分发和传递

    响应者: 在iOS中,响应者为能响应事件的UIResponder子类对象,如UIButton、UIView等。 响...

  • iOS中对于响应链的理解

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

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

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

  • iOS 响应者链

    一个目前最新最全的分析 iOS事件处理,看我就够了~ 对响应者链机制的图文分析 深入浅出iOS事件机制 对响应者链...

  • iOS基础篇-事件处理

    1、首先需要理解iOS事件处理机制 理解事件处理、响应者、响应者链概念https://developer.appl...

网友评论

      本文标题:iOS响应者链

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