UI视图事件传递、视图响应

1、UIView和CALayer关系

UIView 包含 layer 和 backgroundColor 两个属性。

layer:是 CALayer 的对象,包含 contents 用来显示视图,contents 中 backing store 具体负责展示,backing store实际是 bit-map 属性的位图。

backgroundColor:实际是对 CALayer 同名属性方法的一个包装

总结:

UIView 为 CALayer 提供内容,以及负责处理触摸等事件,参与响应链。

CALayer 负责显示内容 contents

这样体现了单一职责的设计原则。UIView 单一负责事件处理,CALayer 单一负责内容。

2、事件传递

// 返回响应的视图

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

// 返回事件是否在相应位置

- (BOOL)pointInside:(CGPoint)poin  twithEvent:(UIEvent*)event


系统 hitTest 方法的实现

3、视图响应

若最终 UIApplicationDelegate 未处理事件,则忽略掉事件,不会崩溃

你可能感兴趣的:(UI视图事件传递、视图响应)