ios-事件的产生和传递

我们都应该知道在程序中我们点击屏幕的时候,系统刚开始不知道我们点击的是谁,如果我们点击屏幕的时候,是会产生一个触摸事件,加入到运行循环中,然后从下往上去查找是谁触摸的,运行循环会去监听所有的事件,运行循环先去找UIApplication,再去找UIWindow再去找RootViewController再去找view如果触摸的点是在view的范围内再去从后往前的去找子控件,就是你添加子控件的顺序从后往上的去找,如果都不在子控件中就返回这个view,这是个例子。这个过程就是去找让谁去执行你的触摸事件。会执行hitTest方法,法,hitTest方法其实就是先去找这个控件能不能接受用户交互,还有去看透明度是不是0.01或者有没有隐藏,如果这个点不在当前的控件中,如果这些其中一个有那么就直接返回。执行触摸事件就是从上往下去执行的。

就比如说你在一个ViewController中添加了个imageView,然后在imageView中添加了个按钮,然后在imageView中设置了不可用交互,那边最后响应这个触摸事件的就是我们ViewController自带的那个view。如果你imageView是可以交互了,点击了按钮,如果按钮添加了点击事件,那么执行完点击事件就结束了,就不会再往下传了。如果第一个执行touchesBegin的就是第一响应者。触摸事件产生以后,所有执行touchBegin的响应者对象就是响应者链条

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值