1>如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图
2>在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理
3>如果window对象也不处理,则其将事件或消息传递给UIApplication对象
4>如果UIApplication也不能处理该事件或消息,则将其丢弃。
五、引入两个方法
1、- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
在寻找最合适的响应者的过程中,每个接收到事件的响应者都会调用这个方法。重写这个方法,并return nil,就可以拦截事件的传递,并把上一个响应者作为最合适的响应者。也可以返回某个特定控件,例如:return self.subviews[0]。
2、- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
在寻找最合适的响应者的过程中,判断点在不在方法调用者上面,即判断点在不在当前控件上面。重写方法,return NO;同样可以拦截事件传递。
结合使用这两个方法,可以实现神奇的效果。。