Mam niestandardowe UIView
, jego zachowanie jest takie: po załadowaniu go ze stalówki i dodaniu do mojej hierarchii widoków, Po pierwsze jest prawie przezroczyste (alpha = 0.1), po dotknięciu staje się nieprzezroczyste (alpha = 1.0), po pewnym czasie automatycznie staje się prawie przezroczysty (alpha = 0,1)."UIView" w systemie iOS przestaje reagować na rozpoznawanie gestów, gdy jego wartość alfa wynosi 0?
Kod w dostosowanego widzenia jest taki, że działa tak jak opisałem powyżej:
- (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;
}];
}
Ale nie chcę „prawie przezroczysty (alfa = 0,1),” chcę „przezroczysty (alpha = 0.0) ". Więc po prostu zmieniłem "0.1" na "0.0" w moim kodzie. Ale kiedy stukam w widok, nie wywołuje on nawet metody tapped:
. Dlaczego tak jest? Jak mogę to sprawić?
'-hitTest: withEvent:' metoda nie zostanie wykonana dla obiektów 'UIView' _", które są ukryte, które spowodowały wyłączenie interakcji użytkownika lub mają poziom alfa mniejszy niż "0.01". _ Źródło: ** UIView Numer referencyjny **: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html – holex
@holex Dziękujemy za wskazanie tego, pomocne, aby o tym wiedzieć. – axl411