所以我创建了一个玻璃窗格或一个自定义UIView来处理触摸。这个玻璃面板位于其他视图(如虚拟uibutton)的顶部。当我设置alpha为0时,触摸实际上会被玻璃视图下面的视图截获。这是错误的。然而,当我将alpha设置为一个较低的值,如0.2,玻璃窗格拦截触摸。
alpha设置是在Interface Builder中完成的。
有人知道如何将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,确保它在前面(在界面生成器列表的底部),设置它的类型为custom;不要设置图片、背景图片或标题。默认情况下,在界面生成器中,您将获得alpha值为1和透明的颜色。然后您可以按照通常的方式连接IBOutlets。