事件传递&视图响应的机制和流程

2018-12-17  本文已影响0人  滨滨_57b5

UIView和CALayer

问题:为什么显示视图要使用UIView和CALayer俩个类型,为什么不直接使用一个类型?
体现了系统的一个设计原则,即单一职责原则

事件传递机制

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event;//最终哪个视图响应了事件
- (BOOL)pointInside:(CGPoint)point withEvent(UIEvent*)event;//用来判断点击位置是否在当前视图范围内

1544671054550.jpg

事件响应链

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;

相关链接及应用式例
响应链相关理解

知识点:UIApplication相关(包括什么是UIApplication事件队列等)
知识点:loadview方法相关
知识点:UIResponder相关
知识点:UIEvent底层
知识点:加速度器、陀螺仪、磁力仪相关的运动事件不遵循此响应链,他们是由Core Motion 直接派发的

上一篇下一篇

猜你喜欢

热点阅读