0

我在我的 uiview 层次结构中放置了一个 UIGestureRecognizer,但它没有被触发。这是视图的一般地图:

UIScrollView > UIView > UIView > UIView > UIView

最后一个视图有手势识别器:

- (id)initWithFrame:(CGRect)frame {    
    self = [super initWithFrame:frame];

    if (self) {
        self.userInteractionEnabled = TRUE;

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
        [self addGestureRecognizer:tap];
        [tap release];
    }  

    return self;
}

- (void)tap:(UIGestureRecognizer *)recognizer {
    NSLog(@"tap");
}

我正在设置canCancelContentTouches滚动视图以允许手势传播。

当我用手势将视图移动到滚动视图的正下方时,它可以工作。有人可以解释为什么它在深层层次结构中不起作用吗?

谢谢!

4

1 回答 1

0

在这样的层次结构中,您触摸的点必须在视图框架和所有父框架内。响应者链从滚动视图开始,如果触摸在滚动视图之外,它就会停在那里。然后它检查滚动视图的直接子级,依此类推。

如果不是这种情况,我建议编写自己的 hittest 函数来检查最后一帧是否被击中并返回它。

于 2011-07-29T12:03:54.070 回答