事件处理的完整过程
- 1> 先将事件对象由上往下传递(由父控件传递给子控件),找到最合适的控件来处理这个事件。
- 2> 调用最合适控件的touches….方法
- 3> 如果调用了[super touches….];就会将事件顺着响应者链条往上传递,传递给上一个响应者
- 4> 接着就会调用上一个响应者的touches….方法
如何判断上一个响应者
- 1> 如果当前这个view是控制器的view,那么控制器就是上一个响应者
- 2> 如果当前这个view不是控制器的view,那么父控件就是上一个响应者
响应者链的事件传递过程
- 如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图
- 在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理
- 如果window对象也不处理,则其将事件或消息传递给UIApplication对象
- 如果UIApplication也不能处理该事件或消息,则将其丢弃
响应者
- touches方法做法是将事件顺着响应着链条向上传递,交给上一响应者进行处理。
- 默认方法中[super touches... withEvent..];
- 控件能响应事件则必须实现重写touches方法,在其方法中处理事件,实现响应。
- 多控件处理的原则是1在响应者链条上,且是其控件的父控件2且实现touches方法。
时间: 2024-10-26 12:09:39