响应者链条中事件传递的过程

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、谁是上一个响应者(即:nextResbond), 每一个响应者都有一个nextResbond

  1.如果当前这个view是控制器的view,那么控制器就是上一个响应者

  2.如果当前这个view不是控制器的view,那么父控件就是上一个响应者。

解释:比如点击了蓝色,如果蓝色的时控制器,则此时蓝色就是上一个响应者,如果蓝色的view不是控制器的view,此时的上一个响应者是红色(红色为蓝色的父控件)

5、什么是响应者链条

  1.响应者链条是由多个响应者对象构成的链条(什么是响应者对象:能处理事件的对象就是响应者对象,继承自UIResbond对象)

  2.利用响应者链条,能让多个控件处理同一个触摸事件

  3.怎么利用链条往上传递?即谁是上一个响应者

事件对象:UIEvent   event

链条的作用:当点击了某一个view的时候,view将这一个事件处理完毕,还有可能会将这个事件传递给他的上一个响应者,还可能往上继续传递

 

6、总结,响应者链的事件传递过程

 

  1.如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图

 

  2.在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理

 

  3.如果window对象也不处理,则其将事件或消息传递给UIApplication对象

 

  4.如果UIApplication也不能处理该事件或消息,则将其丢弃
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值