Özelleştirilmiş bir UIView
var, davranışı şunun gibidir: ben onu nib'den yükledikten sonra görünüm hiyerarşisine ekledikten sonra, ilk olarak neredeyse saydam (alfa = 0.1), dokunduğumda, opak olur (alfa = 1.0), bir süre sonra, otomatik olarak neredeyse şeffaf hale gelir (alpha = 0.1).iOS `UIView`, alfa 0 olduğunda jest tanıyıcıya yanıt vermiyor mu?
- (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;
}];
}
Ama ("neredeyse şeffaf (alfa = 0.1)", ben "şeffaf istiyorum istemiyoruz:
özelleştirilmiş bir görünümde kod böyledir, ben yukarıda açıklanan gibi çalışıyor alfa = 0.0) ". Bu yüzden kodumda "0.1" değerini "0.0" olarak değiştiriyorum. Ancak görünümde dokunduğumda, tapped:
yöntemini bile çağırmaz. Bu neden böyle? Nasıl çalıştırabilirim?
'-hitTest: withEvent:' yöntemi "engelli kullanıcı etkileşimlerini olduğu, gizli, ya da 0.01' 'den daha düşük bir alfa seviyesine sahip" _ UIView' nesneleri' için gerçekleştirilmez _ kaynak: ** UIView Sınıf Referans **: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html Buna dikkat çektiğin için – holex
@holex sayesinde yararlı olduğunu bilmek. – axl411