1 事件传递响应链
以下观点基于 Touch 类型事件
1.1 事件
- 事件:用户与 App 进行单个交互的描述,iOS 中使用 UIEvent 表示事件
- 事件类型包括:
touch events
,motion events
,remote-control events
, andpress events
- UIEvent - UIKit | Apple Developer Documentation
1.2 事件传递链
怎样说明白传递链??(后补)
深入浅出iOS事件机制
1.3 响应
- 对事件进行处理,即响应
- iOS 中使用 UIResponder 作为接收和处理事件对象,任何直接或间接继承UIResponder的对象均能接收和处理事件(UIView,UIViewController,UIWindow,UIApplication)
- UIResponder - UIKit | Apple Developer Documentation
1.4 响应链
- 响应链:查找能够响应事件的最优对象过程即为响应连(与App进行用户交互时,系统把交互事件的信息包装成UITouch和UIEvent等实例,在程序中基于UIResponder的控件结构中,逐级查找能够响应事件的对象,直到没有响应者响应。这一寻找的过程,被称作事件的响应链)
- 响应连是动态的,不唯一,其中参照的是 App 的控件结构关系
- Using Responders and the Responder Chain to Handle Events 其中包含 First Responder 和 Next Responder 的规则说明
- Using Responders and the Responder Chain to Handle Events翻译参考iOS响应链(Responder Chain) - 简书
Apple 的响应链图
- 事件的传递(确定最优响应视图):是从上到下(父控件到子控件)
系统->程序->UIApplication->UIWindow->UIViewController-UIView- 事件的响应(确认实际能响应事件的视图):是从下到上(子控件到父控件)
iOS编程中的快递小哥-Responder Chain(响应链) - 简书
1.5 应用
- 不规则图形点击事件(如 tabbar 中间的圆形 item 点击)等
网友评论