我创建了一个玻璃窗格或自定义的UIView来处理触摸。这个玻璃窗格位于其他视图(如虚拟UIButtons)的顶部。当我将alpha值设置为0时,实际上触摸事件被底下的视图截获了。这是错误的。然而,当我将alpha值设置为低值,例如0.2时,玻璃窗格就会截获触摸事件。
在界面构建器中进行了alpha设置。
有人知道如何将alpha设置为0并仍然使玻璃窗格截获触摸吗?
是的,这是标准行为。
例如,您只需设置该UIView
的背景透明即可:
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,确保它在前面(在界面构建器中列表的底部),将其类型设置为自定义;不设置图像、背景图像或标题。在界面构建器中,默认情况下您将获得alpha为1和透明颜色。然后可以按照通常的方式连接IBOutlets。