本专题围绕 iOS 事件响应者链(Responder Chain) 展开,从官方文档、技术博客与工程实践出发,系统介绍其历史演进、核心原理、应用场景与进阶用法。同一主题下按「总纲 → 事件传递(hitTest)→ 响应者链(nextResponder)→ UIResponder 与多类事件 → 应用与进阶 → 传递方式与编程模式」拆成多篇独立文章,便于按需阅读与查阅。
一、专题知识全景(思维导图)
mindmap
root((iOS 事件响应者链))
基础概念
UIResponder 与响应者
First Responder
事件类型 触摸 按压 摇动 远程控制
事件传递 自上而下
hitTest:withEvent:
pointInside:withEvent:
视图层级与子视图逆序
响应者链 自下而上
nextResponder 规则
UIView / UIViewController / UIWindow / UIApplication
事件转发 touchesBegan 等
传递方式与编程模式
Delegate Block 闭包
函数封装 快速枚举 for 循环
进阶与扩展
UIControl target nil 与响应者链
UIGestureRecognizer 与响应者
自定义 hitTest 应用
SwiftUI 与 UIKit 对比
二、文档列表与阅读顺序
| 序号 | 文档 | 内容概要 |
|---|---|---|
| 01 | 01-主题|事件响应者链@iOS-总纲 | 响应者链的定义、历史背景、事件处理两阶段(hit-test → 响应链)、知识结构图与选型指引 |
| 02 | 02-主题|事件响应者链@iOS-hitTest与事件传递详解 | hitTest(_:with:) 与 point(inside:with:) 原理、算法与伪代码、子视图逆序、自定义命中区域与图示 |
| 03 | 03-主题|事件响应者链@iOS-响应者链与nextResponder详解 | nextResponder 的构成规则、链路径示意、事件沿链传递与转发方式、修改响应链的方法 |
| 04 | 04-主题|事件响应者链@iOS-UIResponder与触摸及多类事件详解 | UIResponder 接口、触摸/按压/摇动/远程控制事件、First Responder 管理、输入视图与编辑菜单 |
| 05 | 05-主题|事件响应者链@iOS-应用场景与进阶实践 | UIControl 的 target=nil 与响应者链、手势识别器与响应者优先级、扩大点击区域、事件穿透等实践与参考文献 |
| 06 | 06-主题|事件响应者链@iOS-响应者链传递方式与编程模式详解 | 传递方式专题:Delegate、Delegate 数组、Block/闭包、函数封装、快速枚举与 for 循环,性能分析(创建/分配/寻址)与选型策略 |
建议阅读顺序:先读 01 总纲 建立整体认知,再按 02 → 03 → 04 理解「事件如何找到目标」与「事件如何在链上传递与处理」;06 专门研究「传递方式」(Delegate、Block、闭包、函数封装、枚举/for 循环),可与 03、05 配合;最后通过 05 结合业务做应用与进阶。
图示与商用场景说明
各篇均配有流程图、思维导图或泳道图(按需):总纲与 02 为 hit-test/两阶段流程图与泳道图;03 为 next 链路径与思维导图;04 为事件类型与第一响应者;05、06 为应用场景与传递方式选型、商用场景表。文中商用场景示例涵盖:列表 Cell 内按钮、浮层穿透、扩大热区、自定义键盘、编辑菜单、支付/异步回调、拦截器链等,便于直接对照业务选型。
三、参考文献与权威来源
- Apple 官方: UIResponder、Using responders and the responder chain to handle events、Event Handling Guide
- 延伸:各分篇文末附有该篇相关的参考文献与链接。