工具栏superview具有UITapGestureRecognizers时,UIBarButton无法正常工作?

时间:2011-02-15 02:02:26

标签: iphone ipad button uigesturerecognizer

我正在经历这种奇怪的行为。

我创建一个干净的项目(视图模板),添加一个带有按钮的工具栏并将其与动作挂钩。有用 ;) 但是,当我向视图控制器的视图添加UITapGestureRecognizer时,工具栏按钮停止工作。 (它被按下但其动作未被调用) 当我添加UITapGestureRecognizer时,只调用链接到它的动作。就像uitapgesture识别器视图隐藏了工具栏但实际上并非如此。

这里发生了什么?我错过了什么?

- (IBAction)itemAction{
    NSLog(@"%s", _cmd);
    self.view.backgroundColor = [UIColor whiteColor];
}
- (void) tapAction{
    NSLog(@"%s", _cmd);
    self.view.backgroundColor = [UIColor greenColor];
}
- (void)viewWasTapped:(UITapGestureRecognizer *)recognizer{
    if (recognizer.state == UIGestureRecognizerStateRecognized) {
        [self tapAction];
    }
}
- (void)viewDidLoad {
    [super viewDidLoad];
    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewWasTapped:)];
    [tapGestureRecognizer setNumberOfTapsRequired:1];
    [self.view addGestureRecognizer:tapGestureRecognizer];
    [tapGestureRecognizer release]; 
}

编辑:项目来源可以从here

下载

提前感谢任何建议

伊格纳西奥

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,发现this回答很有帮助,特别是因为它允许根据触摸的视图类型选择性地排除手势识别器。

答案 1 :(得分:0)

最终我找到了原因:

tapGestureRecognizer.cancelsTouchesInView = NO;