响应者链条

所有控件的多点触摸默认是关闭的。需要使用多点触摸时要手动打开。

UIView的属性:保存是否打开多点触摸的属性

@property(nonatomic,getter=isMultipleTouchEnabled)BOOL multipleTouchEnabled __TVOS_PROHIBITED; // default is NO

UIView的属性:保存当子控件超出父控件的视图范围时是否对子控件进行裁剪的属性

@property(nonatomic) BOOL clipsToBounds; //When YES, content and subviews are clipped to the bounds of the view. Defaultis NO.

控件不能响应用户交互的情况:

1、userinteraction == NO

2、hidden ==YES

3、alphas <=0.01

4、子视图超出父控件的有效范围

触摸事件的产生:响应者链条

手指触摸控件 -> View ->rootViewController -> UIWindow -> app -> 运行循环 ->UIWindow -> rootViewController-> View -> 子控件(touchbegan)

UIView的方法:寻找响应者控件的方法

  • (nullable UIView *)hitTest:(CGPoint)pointwithEvent:(nullable UIEvent *)event; //recursively calls -pointInside:withEvent:. point is in the receiver'scoordinate system

模拟hiTest的实现,寻找子控件时默认从后向前进行遍历

QQ20161106-1.png

拖拽的UIImageView和纯代码创建的UIImageView控件的UserInteractionEnabled默认为NO

从媒体库拖出来的UIImageView有大小,默认UserInteractionEnabled为YES

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容