日常開(kāi)發(fā)中經(jīng)常會(huì)出現(xiàn)視圖或者控件無(wú)法響應(yīng)的情況,但是搞清楚響應(yīng)的原理就很容易查找到問(wèn)題了。
1.self.hidden = YES;
2.self.userInteractionEnabled = NO
3.self.alpha <= 0.01
4.屏幕點(diǎn)擊點(diǎn) 不包含在你需要響應(yīng)的視圖里面(這里可能是父視圖沒(méi)有frame,或者點(diǎn)擊位置超過(guò)父視圖范圍)
以上4種問(wèn)題都可以實(shí)現(xiàn)下面這個(gè)方法來(lái)直接檢測(cè)出來(lái)是否響應(yīng)
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event {
? ? if (self.hidden? || !self.userInteractionEnabled || self.alpha <= 0.01) {
? ? ? ? returnnil;//無(wú)響應(yīng)
? ? }
? ? if([selfpointInside:pointwithEvent:event]) {
? ? ? ? for(UIView*subViewin[self.subviewsreverseObjectEnumerator]) {
? ? ? ? ? ? CGPointconvertedPoint = [subViewconvertPoint:pointfromView:self];
? ? ? ? ? ? UIView*hitTestView = [subViewhitTest:convertedPointwithEvent:event];
? ? ? ? ? ? if(hitTestView) {
? ? ? ? ? ? ? ? returnhitTestView;//找到響應(yīng)的視圖 可以響應(yīng)
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? return nil;//不響應(yīng)
}