用户一旦触摸屏幕, 会产生一个UITouch 对象,会交给UIApplication对象去处理这个对象,并开始寻找最适合的view。通过一个递归方法:
- 1> 判断自己能不能接收事件
- 2> 点在不在窗口上
- 3> 去找比自己更合适的view,从后往前遍历子控件,拿到子控件后,把事件传递给这个子控件
- 4> 子控件拿到事件之后,又会做同样的判断,一直递归去找,直到找到最合适的view.
由于主窗口也是一个UIView,因此首先会去找主窗口,查看主窗口能否产生交互(hidden == NO && alpha > 0.01 && userInteractionEnabled == YES)
找到最合适的view,把事件交给他,这就是事件传递的过程。
响应者链条的系统做法: