一、原理
首先,userInteractionEnabled是属于IOS message消息机制中的一个环节,它代表着是否处理传过来的objc_msgSend()消息事件.
当userInteractionEnabled背置为NO时,表示不响应objc_msgSend()消息事件,当userInteractionEnabled背置为YES时,则正常响应Touch、Move等事件。需要关注的是,在IOS中个UI控件默认值并不相同:
UIImageView 默认的userInteractionEnabled是NO;
UILabel默认 userInteractionEnabled是NO;
UIView的userInteractionEnabled默认是YES。
当一个视图对象的userInteractionEnabled被置为NO,则这个视图对象就被从响应者链里移除,它所负责响应的事件全部无效。所以他的subviews事件到此都会被丢弃。
二、应用
userInteractionEnabled属性可以设置视图是否可以接收到用户的事件和消息,是否可以跟用户交互,如果不想视图接收事件消息,设置为no就可以了,比如说:当一个父视图中包含一个子视图a时,同时又包含另外一个视图b;但是b被a覆盖住了,这样b就不能相应事件,这时候设置a的userInteractionEnabled为no,b的userInteractionEnabled为yes,b就可以接收到消息事件了
三、遇到的问题
在cell中,有个label,给label添加手势,不会响应,将label的userInteractionEnabled设为YES就可以 了。
网友评论