UIView alpha = 0会将触摸删除到下面的视图中

时间:2011-11-11 07:42:13

标签: ios uiview uibutton

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

alpha设置在Interface Builder中完成。

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

2 个答案:

答案 0 :(得分:15)

是的,这是标准行为。

例如,您可以设置UIView的明确背景:

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

在这种情况下,用户不会看到该视图 - 我认为你想要做到这一点?

答案 1 :(得分:14)

是的,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,确保它位于前面(界面构建器中列表的底部),将其类型设置为自定义;不要设置图像,背景图像或标题。默认情况下,在界面构建器中,您将获得1的alpha和清晰的颜色。然后您可以按常规方式连接IBOutlets。