我有一个叠加视图,可以覆盖许多兄弟视图(按钮)。
我正在尝试使用此答案将触摸转发到叠加层视图下方的同级视图:https://stackoverflow.com/a/4847478
这是因为我的叠加视图包含GestureRecognisers。
我希望叠加视图能够识别手势(包括按钮上的手势)并将所有触摸事件传递给它下面的兄弟视图。
我发现事件确实已转发,但按钮点击仍未触发,可能是由于触摸由叠加视图拥有。
我认为不可能改变触摸的所有权。
如果实际上正在转发事件,我如何才能点击按钮进行注册?
答案 0 :(得分:0)
对于您的问题,您必须将响应者传递到下一级别,如果其alpha值为0并且基于该值将它将响应者消息传递到下一个视图,通过这种方式,您可以触摸或单击按钮。
在容器视图中覆盖pointInside:
方法并检查触摸的视图alpha是 0 ,而不是传递返回否,以便将传递消息传递给下一个响应者。
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
for (UIView *view in self.subviews) {
if (!view.hidden && view.alpha > 0 && view.userInteractionEnabled && [view pointInside:[self convertPoint:point toView:view] withEvent:event])
return YES;
}
return NO;
}
希望这有助于您了解响应者链 有关详细信息,请查看此接受的答案:How can I click a button behind a transparent UIView?