在UIView2上面显示UIView1,但在UIView1上输入UIView2

时间:2012-07-13 23:53:59

标签: ios ios5 uiview core-graphics calayer

这是一个奇怪的场景,但我有两个重叠的UIViews,我需要在另一个上面显示一个,但是在接收输入时给予较低的优先级。如果那有意义的话。如果需要,我可以澄清。

我希望在Interface Builder中这样做,但假设不可能,有没有办法以编程方式进行?

编辑:得到它的工作,感谢@ jaydee3。只需覆盖UIView1的hitTest:方法,如下所示。 UIView2是self.otherView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    if (self.otherView && [self.otherView pointInside:[self.otherView convertPoint:point fromView:self] withEvent:event])
    {
        return [self.otherView hitTest:[self.otherView convertPoint:point fromView:self] withEvent:event];
    }

    return [super hitTest:point withEvent:event];
}

1 个答案:

答案 0 :(得分:2)

如果您不需要在view1上输入,只需设置view1.userInteractionEnabled = NO即可。这可以在IB中完成。

否则,您必须使用一些代码。例如。子类UIView用于view1并覆盖hitTest: …方法。如果触摸的点与另一个视图重叠,请返回[view2 hitTest: …]