可以用来验证视图或者控件无法响应的一个方法

2018-09-27  本文已影响11人  青火

日常开发中经常会出现视图或者控件无法响应的情况,但是搞清楚响应的原理就很容易查找到问题了。
1.self.hidden = YES;
2.self.userInteractionEnabled = NO
3.self.alpha <= 0.01
4.屏幕点击点 不包含在你需要响应的视图里面(这里可能是父视图没有frame,或者点击位置超过父视图范围)

以上4种问题都可以实现下面这个方法来直接检测出来是否响应

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

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

        returnnil;//无响应

    }

    if([selfpointInside:pointwithEvent:event]) {

        for(UIView*subViewin[self.subviewsreverseObjectEnumerator]) {

            CGPointconvertedPoint = [subViewconvertPoint:pointfromView:self];

            UIView*hitTestView = [subViewhitTest:convertedPointwithEvent:event];

            if(hitTestView) {

                returnhitTestView;//找到响应的视图 可以响应

            }

        }

    }

    return nil;//不响应

}

上一篇下一篇

猜你喜欢

热点阅读