• hitTest方法与PointInside方法


        
        作用:寻找最适合的View
        参数:当前手指所在的点.产生的事件
        返回值:返回谁, 谁就是最适合的View.
        什么时候用调用:只要一个事件,传递给一个控件时, 就会调用这个控件的hitTest方法
        -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
        
        作用:判断point在不在方法调用者上
        point:必须是方法调用者的坐标系
        什么时候调用:hitTest方法底层会调用这个方法,判断点在不在控件上.
        -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
            return YES;
        }
        
        
        hitTest底层实现:
            
            1.判断当前能不能接收事件
              if(self.userInteractionEnabled == NO || self.hidden == YES || self.alpha <= 0.01) 
              return  nil;
            2.判断触摸点在不在当前的控件上
             if(![self pointInside:point withEvent:event]) return nil;
            3.从后往前遍历自己的子控件
            int count = (int)self.subviews.count;
            for (int i = count - 1; i >= 0;i-- ) {
            
            UIView *childV = self.subviews[i];
            把当前坐标系上的点转换成子控件坐标系上的点.
            CGPoint childP = [self convertPoint:point toView:childV];
            判断自己的子控件是不是最适合的View
            UIView *fitView = [childV hitTest:childP withEvent:event];
            如果子控件是最适拿的View,直接返回
                if (fitView) {
                    return  fitView;
                }
            }

            4.自己就是最适合的View
                return self.

  • 相关阅读:
    .NET Demon为Visual Studio提供持续编译和测试功能
    java面试题:字符串的排列算法
    JS实现IP地址判断
    明茨伯格管理进行时的读书感想:好书,适合有一定管理经验的人沉淀
    N个小时学MM IMG设定_存货管理和盘点 <四>
    上线第一天
    ISurfaceOp 接口生成等高线(一)
    出差合肥,路经武汉,后到长沙
    新博客
    出差合肥,路经武汉,后到长沙2
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6980428.html
Copyright © 2020-2023  润新知