UIScrollView和检测轻击手势的子视图

4 iphone uiscrollview uigesturerecognizer

我在自己的视图中添加了一个TapGestureRecognizer:

    tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
    tap.numberOfTapsRequired = 1;
    tap.numberOfTouchesRequired = 1;
    [self.view addGestureRecognizer:tap];
    [tap release];
Run Code Online (Sandbox Code Playgroud)

该视图包含带有图像和标签的单个UIScrollView.我想检测用户是否点击标签.

- (void)singleTap:(UIGestureRecognizer*)gestureRecognizer {

    CGPoint pt = [gestureRecognizer locationInView:self.view];

    UIView *v = [self.view hitTest:pt withEvent:nil];
    if ([v isKindOfClass:[UILabel class]]) {
        NSLog(@"label!");
        return;
    }   
    // else do other stuff if its not a label
Run Code Online (Sandbox Code Playgroud)

但是我没看到标签!在我的日志中.

dar*_*s0n 5

我认为这是因为userInteractionEnabled默认情况下NOUILabels.试着打开它.

编辑:这真的是一个猜测,但只是为了确认,Apple官员[UIView hitTest:withEvent:]说:

此方法忽略隐藏的视图对象,禁用用户交互或alpha级别小于0.01的视图对象.