在 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 输入方式的主要内容,如果未能解决你的问题,请参考以下文章
为啥 view2 没有出现在这段代码中? (将 UIView 2 合并到 UIView 1 中)