UIView阿尔法= 0导致触摸被放到下面的视图

所以我创build了一个玻璃窗格或一个自定义的UIView来处理触摸。 这个玻璃窗格位于其他视图的顶部,如虚拟UIButtons。 当我将alpha设置为0时,触摸实际上被玻璃视图下方的视图拦截。 这是错误的。 但是,当我将alpha设置为像0.2这样的低值时,玻璃窗拦截触摸。

Alpha设置是在Interface Builder中完成的。

任何人都知道如何设置为0的alpha,仍然有这个玻璃窗口拦截触摸?

是的,这是标准的行为。

例如,你可以设置清晰的UIView背景:

 UIView *touchHandlerView; touchHandlerView.backgroundColor = [UIColor clearColor]; 

在这种情况下用户不会看到这个观点 – 我假设你想要这样做?

是的, alpha=0.0f;hidden=YES; 有同样的效果。 这是非常有用的,因为你可以animation淡出,而不必担心触及不可见的对象,即你可以说:

 -(void)hideOverlayButton { [UIView beginAnimations:@"hideOverlayButton" context:nil]; [UIView setAnimationDuration:0.2]; [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; [self.overlayButton setAlpha:0.0]; [UIVIew commitAnimations]; } 

然后,当animation完成时,button不会响应触摸 – 没有必要担心停用它。

如果你想要的是隐藏的button,在视图中放置一个UIButton,确保它在前面(界面生成器的列表的底部),将它的types设置为自定义; 不要设置图像,背景图像或标题。 默认情况下,在界面生成器中,您将得到1的alpha和一个清晰的颜色。然后,您可以用通常的方式连接IBOutlets。