• 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;
    }
  • 相关阅读:
    TestComplete 14 百度网盘下载
    appium 安装
    python 操作yaml文件
    Linux 性能检测常用的10个基本命令
    清除浮动的几种方式及优缺点总结
    css居中布局的几种方式
    css的优先级权重
    移动端1px的边框
    Nuxt.js入门学习
    vue-cli3 中console.log报错
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5037413.html
Copyright © 2020-2023  润新知