您的位置:首页 > 移动开发 > IOS开发

ios-事件的产生和传递

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

就比如说你在一个ViewController中添加了个imageView,然后在imageView中添加了个按钮,然后在imageView中设置了不可用交互,那边最后响应这个触摸事件的就是我们ViewController自带的那个view。如果你imageView是可以交互了,点击了按钮,如果按钮添加了点击事件,那么执行完点击事件就结束了,就不会再往下传了。如果第一个执行touchesBegin的就是第一响应者。触摸事件产生以后,所有执行touchBegin的响应者对象就是响应者链条
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: