ios-事件的产生和传递

来源:互联网 发布:淘宝买家号可以开店吗 编辑:程序博客网 时间:2024/06/08 03:55

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

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

原创粉丝点击