日常开发中经常会出现视图或者控件无法响应的情况,但是搞清楚响应的原理就很容易查找到问题了。
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;//不响应
}
网友评论