美文网首页
UIview中- hitTest方法实现猜想

UIview中- hitTest方法实现猜想

作者: 木木奻 | 来源:发表于2018-09-11 16:46 被阅读0次
    UIview中- hitTest方法实现猜想

    当发生用户交互的时候,uiview会自动调用hitTest,重写系统的hitTest方法,实现效果与系统一样,则猜想正确!

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

    {

        NSLog(@"%@----hitTest:", [self class]);

        // 如果控件不允许与用户交互那么返回 nil

        if (self.userInteractionEnabled == NO || self.alpha <= 0.01 || self.hidden == YES) {

            return nil;

        }

        // 如果这个点不在当前控件中那么返回 nil

        if (![self pointInside:point withEvent:event]) {

            return nil;

        }

        // 从后向前遍历每一个子控件

        for (int i = (int)self.subviews.count - 1; i >= 0; i--) {

            // 获取一个子控件

            UIView *lastVw = self.subviews[i];

            // 把当前触摸点坐标转换为相对于子控件的触摸点坐标

            CGPoint subPoint = [self convertPoint:point toView:lastVw];

            // 判断是否在子控件中找到了更合适的子控件

            UIView *nextVw = [lastVw hitTest:subPoint withEvent:event];

            // 如果找到了返回

            if (nextVw) {

                return nextVw;

            }

        }

    相关文章

      网友评论

          本文标题:UIview中- hitTest方法实现猜想

          本文链接:https://www.haomeiwen.com/subject/fkiugftx.html