在 UIView2 上方显示 UIView1,但在 UIView1 上方显示 UIView2 输入方式

Posted

技术标签:

【中文标题】在 UIView2 上方显示 UIView1,但在 UIView1 上方显示 UIView2 输入方式【英文标题】:Displaying UIView1 above UIView2, but having UIView2 above UIView1 input-wise 【发布时间】:2012-07-13 23:53:59 【问题描述】:

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

最好我想在 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】:

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

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

【讨论】:

我仍然需要在 UIView1 上接收输入,所以我将不得不做类似后一种方法的事情。希望这会奏效。谢谢。

以上是关于在 UIView2 上方显示 UIView1,但在 UIView1 上方显示 UIView2 输入方式的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 嵌入 UIVIew 不负责任

为啥 view2 没有出现在这段代码中? (将 UIView 2 合并到 UIView 1 中)

uiscrollview 水平拉动以根据拖动的距离选择对象

自动布局:Y 位置作为两个值的最大值

iOS 7 中的视图移动到导航栏上方,但在 iOS 6 中可以正常工作

Unity - 如何在屏幕覆盖画布上方显示世界空间画布?