事件分发+响应: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.事件分发
hit_test.png是从 用户点击屏幕 =》 Application =》Window =》View =》子视图 。
调用hitTest:withEvent:
(通过重写可以改变事件的分发) ,这个视图之前会先通过调用pointInside:withEvent:
返回一个bool
(判断是否在当前的视图中)
@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的一个回溯过程,
网友评论