事件分发和事件响应

事件分发+响应:http://blog.csdn.net/itianyi/article/details/48442951
页面的渲染:http://www.cocoachina.com/ios/20151203/14549.html
保持页面流畅:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/

1.事件分发

是从 用户点击屏幕 =》 Application =》Window =》View =》子视图 。
调用hitTest:withEvent:(通过重写可以改变事件的分发) ,这个视图之前会先通过调用pointInside:withEvent: 返回一个bool(判断是否在当前的视图中)

事件分发和事件响应_第1张图片
hit_test.png

@implementation FatherView

//消息分发
-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    
    //这句话其实是调用 在当前视图【self】中已经找到了hitView,可能是子视图也可能是自己
    id hitView = [super hitTest:point withEvent:event];
    
    NSLog(@"hitView = %@",hitView);
    
    if (hitView == nil) {
        
        UIView * subView = self.subviews[0];
        
        //把事件转给子类视图去处理
        if ([subView pointInside:[self convertPoint:point toView:subView] withEvent:event]) {
            
            return subView;
        }
    }
    
    return hitView;
}



@end

2.事件响应

如果找到了hitView 就直接返回hitView,如果没有找到,就相当于hitView的一个回溯过程,

你可能感兴趣的:(事件分发和事件响应)