iOS 响应者链

UIView响应事件满足的调节
1. userInteractionEnabled=YES,该属性表示允许控件同用户交互
2. hidden = NO;
3. alpha > 0.01;

iOS接收到触摸事件, 首先打包成UIEvent对象放到UIApplication中,UIApplication会从事件队列中取出触摸事件并传递给UIWindow;

  1. 当用户手指触摸到屏幕莫一区域时, UIWindow查找其子控件, 然后调用所有子控件的方法
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

来通过指定的触摸点获取最合适的UIView来处理该触摸事件. 通过调用下面方法

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

判断触摸点是否在子控件区域内,如果返回时YES, 则重复操作,直到找到最上合适的View

总结 : 先把触摸事件打包放到UIApplication中, 然后通过UIApplication传递到UIWindow中, 然后调用两个方法去判断触摸点在UIwindow中的子控件, 同时判断子控件是否满足触摸时间的调节,从下至上一次调用判断, 直到找到合适的VIew.

你可能感兴趣的:(iOS 响应者链)