这是一个奇怪的场景,但我有两个重叠的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];
}
答案 0 :(得分:2)
如果您不需要在view1上输入,只需设置view1.userInteractionEnabled = NO
即可。这可以在IB中完成。
否则,您必须使用一些代码。例如。子类UIView用于view1并覆盖hitTest: …
方法。如果触摸的点与另一个视图重叠,请返回[view2 hitTest: …]
。