我可以创建一个完全透明的UIView接收触摸吗?

时间:2013-06-13 09:01:56

标签: ios objective-c uiview alpha uitouch

我想创建一个完全透明的UIView叠加层(它有子视图)来接收触摸。我可以将alpha设置为低值(如0.02)以获得近似效果。

但我想知道alpha == 0 UIView是否有可能通过其他UIView配置接收触摸?

2 个答案:

答案 0 :(得分:4)

您可以通过覆盖完全透明视图的类中的hitTest:withEvent:方法来完成此操作,例如:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    return self;
}

当然,hitTest:withEvent:的实施并非如此简单。关键是,只要某事hitTest:withEvent:返回该视图,即使是完全透明的视图也是可触摸的。

但请注意,使用hitTest:withEvent:进行操作是一种简单的方法来创建一些非常奇怪的错误。请谨慎使用此方法。

答案 1 :(得分:3)

更好的方法是设置背景颜色:

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

为此添加UITapGestureRecognizer以连接选择器以响应点击。