0

我有一个子类 UIView,我将调用 customView。我希望启用触摸,以便用户可以操作具有手势识别器和其他控件的子视图,但我希望视图本身不可触摸,以便在视图下方绘制的视图仍然是可触摸的。换句话说,customView 将被绘制在应用程序中的其他视图之上,但我仍然希望下面的视图是可触摸的,同时允许触摸 customView 的子视图。

我试过像这样使用touchesBegan,但这不起作用。有任何想法吗?谢谢阅读!

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];

//I've tagged the views that I want to be touchable.
    if ([touch view].tag == 1000 || [touch view].tag == 2000 || [touch view].tag == 3000) {
        self.userInteractionEnabled = YES;
    } else {
        self.userInteractionEnabled = NO;
    }
}
4

2 回答 2

1

您需要做的是在您的 customView 中实现以下方法:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    //check if one of the subviews was hit, if so forward the touch event to it
    for (UIView *view in self.subviews){
        if (CGRectContainsPoint(view.frame, point))
            return view;
    }

    // use this to pass the 'touch' upward in case no subviews trigger the touch
    return [super hitTest:point withEvent:event];
}
于 2013-03-06T15:33:21.677 回答
0

然后将这些子视图添加到您的customview.other副您的customview不应该让他们触摸。并将自定义视图放在这些子视图下方,这样您选择的子视图就可以触摸了。

于 2013-03-05T12:49:38.437 回答