1

我有 2 个视图作为主视图的子视图。

主视图 | |--- 视图 A | |--- 视图 B

我在视图 A 中有一个带有框架 (0, 0, 50, 50) 的按钮,在视图 B 中有一个带有框架 (200, 200, 50, 50) 的按钮。

视图 A 和视图 B 的背景颜色为零(因此它们都是透明的)。

并且所有视图都具有相同的框架。

我希望能够单击两个按钮,但只有视图 B 中的按钮是可单击的。iOS 6 的情况并非如此。

有任何想法吗?

丑陋的解决方案:

我找到了我的问题的解决方案,我所要做的就是让我的视图 A 和视图 B 成为 PassThroughUIView,但这是一个非常丑陋的解决方案,我想知道是否有更好的解决方案,一个不涉及更改我的视图班级。

@implementation PassThroughUIView

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    for (UIView *v in self.subviews) {
        CGPoint localPoint = [v convertPoint:point fromView:self];
        if (v.alpha > 0.01 && ![v isHidden] && v.userInteractionEnabled && [v pointInside:localPoint withEvent:event])
            return YES;
    }
    return NO;
}

@end
4

1 回答 1

2

我想出的唯一解决方案是将 UIView 子类化并实现:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    for (UIView *v in self.subviews) {
        CGPoint localPoint = [v convertPoint:point fromView:self];
        if (v.alpha > 0.01 && ![v isHidden] && v.userInteractionEnabled && [v pointInside:localPoint withEvent:event])
            return YES;
    }
    return NO;
}

这个 UIView 将是一个“通过视图”

于 2014-03-25T17:09:05.713 回答