使用userInteractionEnabled = NO的视图顶部的UIButton

时间:2015-09-09 02:40:49

标签: ios uibutton

我在keyWindow

之上创建了一个透明图层
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
_topLayer = [[UIView alloc] initWithFrame:window.frame];
_topLayer.backgroundColor = [UIColor clearColor];
_topLayer.userInteractionEnabled = NO;
[window addSubview:_topLayer];

我添加了想要出现在所有内容之上的子视图。我用了

userInteractionEnabled = NO

因此该图层不会阻止对下方工作人员的点击。

我试图在该图层的顶部添加UIButton,但由于上述userInteractionEnabled = NO

,它没有响应点击

如何让按钮保持响应,同时让整个背景保持透明?

提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以执行此操作:subclass UIViewuserInteractionEnabled=YES然后使用此代码段:

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    id hitView = [super hitTest:point withEvent:event];
    if (hitView == self) return nil; // <--- pass-through if touch on UIView
    else return hitView; // touch on children
}

答案 1 :(得分:0)

@anhtu的回答是我试图实现的真正复杂因素。正确的方法是将按钮设置为透明视图的兄弟,而不是将其添加为子视图。

在此处查看此扩展:https://stackoverflow.com/a/35592676/913347