사용자 정의 UIView
을 가지고 있는데 그 동작은 다음과 같습니다. 펜촉에서로드하고 내 뷰 계층 구조에 추가 한 후 맨 먼저 거의 투명 (알파 = 0.1)이고 탭하면 불투명 (alpha = 1.0), 약간의 시간이 지나면 자동으로 거의 투명 해집니다 (알파 = 0.1).iOS UIView가 알파가 0 일 때 제스처 인식기에 응답하지 않습니다?
- (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;
}];
}
하지만 ("거의 투명은 (알파 = 0.1)", 나는 "투명 싶어하지 않으 :
사용자 정의보기의 코드는 다음과 같다, 내가 위에서 설명한 것처럼 작동 알파 = 0.0). 그래서 간단하게 "0.1"을 "0.0"으로 변경합니다. 그러나 뷰를 탭하면 tapped:
메서드를 호출하지 않습니다. 이게 왜 그렇게? 어떻게 작동시킬 수 있습니까?
숨겨져 있거나, 사용자 상호 작용을 사용하지 못하게하거나, 알파 레벨이 '0.01' 미만인'UIView' 개체 _에 대해'-hitTest : withEvent :'메서드가 수행되지 않습니다. "_ source : ** UIView 클래스 참조 ** : https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html – holex
@ 홀렉스 그 점을 지적 해 주셔서 감사합니다. – axl411