UIResponder_响应者_响应者链条

在iOS中不是任何对象都能处理时间,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象”

UIApplication UIViewController UIView都是继承自UIResponder,因此他们都是响应者对象,都能够接收并处理事件。

UIResponder内部提供了以下方法来处理事件

UIResponder_响应者_响应者链条_第1张图片

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,那么父控件就是上一个响应者


UIResponder_响应者_响应者链条_第2张图片

你可能感兴趣的:(UIResponder_响应者_响应者链条)