1、如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件。
2、在以下几种情况下,控件是不能接收触摸事件
1.不接收用户交换 userInteractionEnable= NO;
2.隐藏 hiden = YES;
3.透明 alpha = 0.0 ~ 0.01;
提示:UIImageView的userInteractionEnable默认为NO,因此UIImageView以及他的子控件默认不接收触摸事件。
3、事件的完整处理过程
1.先将事件对象由上往下传递(由父控件传递给子控件),找到最合适的控件来处理这个事件(假如点击了绿色的) (如上图:白-->红 --->绿)
2.调用最合适的控件 touches....(begin.. moving ... end... )方法
3.如果调用了 [super touches...]方法,则事件将会顺着响应者链条往回传递,传递给上一个响应者(能处理事件的控件)
4.接着就会调用上一个响应者的 touches....(begin.. moving ... end... )方法
5.如果这个响应者又调用了 [super touches...]方法,则继续往上传,知道那个没有调用 [super touches...]方法的控件时候才停止
4、上一个响应者
1.如果当前这个view是控制器的view,那么控制器就是上一个响应者
2.如果当前这个view不是控制器的view,那么父控件就是上一个响应者。
解释:比如点击了蓝色,如果蓝色的时控制器,则此时蓝色就是上一个响应者,如果蓝色的view不是控制器的view,此时的上一个响应者是红色(红色为蓝色的父控件)
5、什么是响应者链条
1.响应者链条是由很多响应者对象构成的链条
链条的作用:当点击了某一个view的时候,view将这一个事件处理完毕,还有可能会将这个事件传递给他的上一个响应者,还可能往上继续传递