zoukankan      html  css  js  c++  java
  • hitTest方法与PointInside方法

    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;
    }
  • 相关阅读:
    31款简单实用的CSS+JS下拉菜单脚本
    POWERDESIGNER 15 反向生成PDM[转]
    WCF异常信息
    下载文件
    分区表的维护 ORA14402 更新分区关键字列
    [转]Winform框架之字典数据管理
    用例图(User Case)
    datetime的时值
    JS date对象的减法处理
    JS获取当前页面的高度
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5037413.html
Copyright © 2011-2022 走看看