hitTest:withEvent:方法流程
2016-04-28 15:31 骨古 阅读(329) 评论(0) 编辑 收藏 举报当时的项目需求是将一个view添加到UIButton之上,但是呢,又可以在View上点击UIButton,这是一个蛋疼的事
先上代码吧 然后再分析
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
//将坐标系上的点转换到按钮上
CGPoint btnP = [self convertPoint:point toView:self.btn];
//判断点在不在按钮上
if ([self.btn pointInside:btnP withEvent:event]) {
//点在按钮上
return self.btn;
} else {
return [super hitTest:point withEvent:event];
}
}
- 先讲下hitTest:withEvent:的作用,就是在你点击屏幕,事件传递的过程中,寻找到接受点击事件的最佳View
- pointInside:withEvent:是用来判断当前的点击或者触摸事件的点是否在当前的view。
好了 有着两个方法,就可以透过遮盖的view,让下面的btn得到相应事件了 - 过程是先将遮盖view上的point转换到UIButton上,这是就会用到一个方法,就是convertPoint:toView
得到转换的点之后,然后判断点是否在UIbutton的区域范围,如果是,就让这个Btn相应事件,不是的话,就返回遮盖的View.