iOS事件传递和视图响应


iOS事件响应机制的事件传递流程

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event:返回事件响应的视图

- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event:判断点击位置是否在当前视图范围内

事件传递的大概流程: 点击屏幕-UIApplication - UIWindow- >寻找处理事件最合适的View->hitTest - pointInsde。

注意:如果父视图不能接触触摸事件,那么子控件也不能接受到触摸事件

应用如何找到最合适的控件来处理事件?

整体事件流程图如下图所示

事件响应链

UIResponder是所有响应者对象的基类,正是由于继承了它,才能响应touch事件

优先是最上层的View响应事件,如果该View有父视图,下一个响应值就是父视图,如果没有就传给他对应的ViewController,这样从最上层View一直传到单例UIWindow对象,最后是单例UIApplication对象以终止,UIApplication的下一个响应者是nil,这样就是整个响应链的过程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容