我有2个视图作为主视图的子视图。
主要观点 | | ---查看A. | | ---查看B
我在视图A中有一个带框架(0,0,50,50)的按钮, 以及在视图B中具有框架(200,200,50,50)的按钮。
视图A和视图B具有nil backgroundColor(因此它们都是透明的)。
所有观点都有相同的框架。
我希望能够点击两个按钮,但只能点击视图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
答案 0 :(得分: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将是一个"通过视图"