Ho un UIView
personalizzato, il suo comportamento è simile al seguente: dopo averlo caricato da pennino e aggiunto alla mia gerarchia di visualizzazione, è in primo luogo quasi trasparente (alpha = 0.1), quando lo tocco, diventa opaco (alpha = 1.0), dopo un po 'di tempo, diventa automaticamente quasi trasparente (alpha = 0.1).iOS `UIView` smette di rispondere al riconoscimento dei gesti quando il suo alfa è 0?
Il codice nella visualizzazione personalizzata è così, esso funziona come descritto sopra:
- (void)awakeFromNib {
[self setup];
}
- (void)setup {
self.alpha = 0.1f;
[self addGestureRecognizer:[[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(tapped:)]];
}
- (void)tapped:(UITapGestureRecognizer *)tapRecognizer {
if (self.alpha == 1.0) {
[self hideSelf];
} else {
[UIView animateWithDuration:0.5
animations:^{ self.alpha = 1.0f; }
completion:^(BOOL finished) {
[self.timer invalidate];
self.timer = nil;
self.timer = [NSTimer timerWithTimeInterval:3
target:self
selector:@selector(hideSelf)
userInfo:nil
repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:self.timer
forMode:NSDefaultRunLoopMode];
}];
}
}
- (void)hideSelf {
[UIView animateWithDuration:0.5
animations:^{ self.alpha = 0.1f; }
completion:^(BOOL finished) {
[self.timer invalidate];
self.timer = nil;
}];
}
Ma non voglio "quasi trasparente (alfa = 0.1)", voglio "trasparente (alfa = 0.0) ". Quindi ho semplicemente cambiato "0.1" in "0.0" nel mio codice. Ma quando tocco la vista, non chiama nemmeno il metodo tapped:
. Perché è così? Come posso farlo funzionare?
'-hitTest: withEvent:' il metodo non verrà eseguito per 'oggetti UIView' _" che sono nascosti, che hanno disabilitato le interazioni dell'utente o hanno un livello alfa inferiore a '0.01'." _ Origine: ** UIView Riferimento di classe **: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html – holex
@holex Grazie per averlo sottolineato, utile a saperlo. – axl411