事件传递和事件响应

2019-03-05  本文已影响0人  0fbf551ff6fb

UIView可以处理用户的操作 参与视图响应链

CALayer只是图层的显示    

事件传递主要跟两个方法有关

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;

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

当触摸屏幕后,首先传递如下,传递到UIWindow之后会调用他的hitTest和pointside的方法,判断如果在window的范围内,继续遍历window的自视图,按照倒叙原则,后面添加的先遍历,之后再调用hitTest和pointInside的方法,层层遍历,最后返回一个UIView。

事件响应与事件传递是相反的,他是一级一级向着上面传递,如果当前视图不能处理点击事件,那么会把事件传递给父视图去处理,比如在ViewController上面添加个view,如果view没有响应触摸事件(有没有重写touchesBegan、touchesMoved、touchesEnded、touchesCancelled这些响应触摸事件的方法),点击view,事件会传递给ViewController去处理,如果ViewController也处理不了,最后传递给window依然没有处理的话  那么事件就会被丢弃

上一篇 下一篇

猜你喜欢

热点阅读