UIView alpha = 0导致触摸被放置到下面的视图



所以我创建了一个玻璃窗格或一个自定义UIView来处理触摸。这个玻璃面板位于其他视图(如虚拟uibutton)的顶部。当我设置alpha为0时,触摸实际上会被玻璃视图下面的视图截获。这是错误的。然而,当我将alpha设置为一个较低的值,如0.2,玻璃窗格拦截触摸。

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

有人知道如何将alpha设置为0并且仍然有这个玻璃窗格的截距触摸吗?

是的,这是标准行为。

例如,您可以将UIView:

设置为clear background
UIView *touchHandlerView;
touchHandlerView.backgroundColor = [UIColor clearColor];

在这种情况下,用户不会看到那个视图-我假设你想这样做?

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

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

然后,当动画完成时,按钮将不会响应触摸-没有必要担心停用它。

如果你想要有不可见的按钮,在视图上放一个UIButton,确保它在前面(在界面生成器列表的底部),设置它的类型为custom;不要设置图片、背景图片或标题。默认情况下,在界面生成器中,您将获得alpha值为1和透明的颜色。然后您可以按照通常的方式连接IBOutlets。

最新更新