响应者:在iOS中,响应者为能响应事件的UIResponder子类对象,如UIButton、UIView等。
响应者链:响应链是由链接在一起的响应者(UIResponse子类)组成的。默认情况下,响应链是由第一响应者,到application对象以及中间所有响应者一起组成的。
事件传递:获得响应链后,将事件由第一响应者往application传递的过程即为事件传递。
响应者链执行过程:
1.寻找第一响应者
2.寻找最终响应对象
如何寻找第一响应者
hitTest:withEvent:的处理流程
事件的响应流程
需要思考的点
为什么会出现在响应链中,但是无法响应事件。
这里容易产生误解,就是寻找第一响应者的过程其实只判断该视图是否具有响应触摸事件的能力,但是并没有判断是否可以响应该event。
第一响应者对event的具体处理,是在事件响应的过程中进行判定的。
视图不响应检查要点
1.hidden = YES 视图被隐藏
2.userInteractionEnabled = NO 不接受响应事件
3.alpha <= 0.01,透明视图不接收响应事件
4.子视图超出父视图范围
5.需响应视图被其他视图盖住
6.是否重写了其父视图以及自身的hitTest方法
7.是否重写了其父视图以及自身的pointInside方法
网友评论