首页 > 其他 > 详细

hitTest方法与PointInside方法

时间:2015-12-10 23:15:33      阅读:308      评论:0      收藏:0      [点我收藏+]

 

04-hitTest方法与PointInside方法

hitTest方法

作用:寻找最适合的View
参数:当前所指所在的点产生的事件
返回值:返回谁, 谁就是最适合的View. 
什么时候调用:只要这个事件,传递给子个控件时, 就会调用这个控件的hitTest方法 
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

PointInside方法

作用:判断point在不在方法调用者上
point:必须是方法调用者的坐标系 
什么时候调用:hitTest方法底层会调用这个方法,判断点在不在控件上. 
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
return YES; 
}

hitTest方法底层实现

作用:当一个事件传递给当前View的时候就会调用这个方法. 
当前手指在屏幕上的点
当前产生的事件
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
1.查看自己能不能接收事件
if(self.userInteractionEnabled == NO || self.hidden == YES ||self.alpha <= 0.01){
return nil; 
}
2.判断当前的点在不在自己身上.
if(![self pointInside:point withEvent:event]){
    return nil; 
}
    //查看自己是不是最适合的view 
    //从后往前遍历自己的子控制器.
int count = (int)self.subviews.count; 
for(inti = count -1; i >=0; i--) {
    //取出子控制器.
UIView *childView = self.subviews[i];
    //要把当前的点转换成子控件上的坐标点. 
CGPoint childP= [selfconvertPoint:point toView:childView];
UIView *view = [childView hitTest:childP withEvent:event]; 
    //如果有值,直接返回,返回的就是最适合的View.
if (view) { 
    return view;    
    } }
    //没有找到比自己更适合的View.自己就是最适合的View 
return self;
}

hitTest方法与PointInside方法

原文:http://www.cnblogs.com/zhoudaquan/p/5037413.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!