在iOS中不是任何对象都能处理时间,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象”
UIApplication UIViewController UIView都是继承自UIResponder,因此他们都是响应者对象,都能够接收并处理事件。
UIResponder内部提供了以下方法来处理事件
UIView的响应者链条
UIView不接收触摸事件的三种情况
----------------------------------------------------------------------
1.不接收用户交互uerInteractionEnable = NO
2.隐藏hidden = YES
3.透明alpha = 0.0~0.01
提示:UIImageView的UserInteractionEnabled默认就是NO,因此UIImageView以及它的子空间默认是不能接收触摸事件的。
事件的完整处理过程:
1.先将事件对象由上往下传递(由父控件传递给子控件),找到最合适的空间来处理这个事情
2.调用最合适空间的touches......方法
3.如果调用了[super touches......];就会将事件顺着响应者链条往上传递,传递给上一个响应者
4.接着就会调用上一个相应者的touches......方法
什么是响应者链条?
1.响应者链条是由多个响应者对象链接起来的链条(什么是响应者对象:能处理时间的对象)
2.利用响应者链条,能让多个控件处理同一个触摸事件
3.怎么利用链条往上传递,谁是上一个响应者
谁是上一个响应者:
1.如果当前这个view的是控制器的view,那么控制器就是上一个响应者
2.如果当前这个view不是控制器的view,那么父控件就是上一个响应者