ios的事件处理 一 基本概念

2018-07-13  本文已影响0人  Oliver_Dev

Key word

Responder

1.一个Responder是UIResponder Class的实例化
2.常见的UIResponder子类有UIView,UIViewController, UIApplication
3.中文解释: 响应者

简述

Responder Chain

  1. UIKit本身有一套默认的规则 决定了每个Responder的next Responder,当前Responder无法响应Event时,直接将该Event丢给next Responder
    如下图,当点击文本时
    1.UILabel并不处理点击事件
    2.UIKit会将该事件丢给UILabel的next Responder,此处为它
    的superView
    3.延着链路,一路传递
    UIViewController -> UIWindow -> UIApplication
    image.png
    UIKit本身默认的规则为
    1.UIView的next Responder是superView,当superView为nil时,则为该view所属的container(绝大多数情况为UIViewController或者极少情况下为UIWindow)
    2.UIViewController的next Responder是UIWindow
    3.UIWindow的next Responder是UIApplication

// 基本上2,3的规则是不会去改变的。另外 基于职责分配原则,通常也不会在UIWindow和UIApplication做事件处理

需要特殊说明的是当UIViewController本身是一个containerController,会包含childViewController,childViewController并不会参与到响应者链中,只有childViewController.View才会

待续

上一篇 下一篇

猜你喜欢

热点阅读