【问题标题】:UIBarButton not working when toolbar superview has UITapGestureRecognizers?当工具栏超级视图具有 UITapGestureRecognizers 时,UIBarButton 不起作用?
【发布时间】:2011-02-15 02:02:26
【问题描述】:

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

我创建了一个干净的项目(视图模板),添加了一个带有按钮的工具栏,并将它与一个动作挂钩。有用 ;) 但是,当我将 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下载

提前感谢您的任何建议

伊格纳西奥

【问题讨论】:

  • 混乱在哪里?您的点击手势识别器在按钮可以之前处理点击。
  • 是的,我知道,但手势识别器的视图位于工具栏下方,因此不应以这种方式发生。应该吗?

标签: iphone ipad button uigesturerecognizer


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    终于找到原因了:

    tapGestureRecognizer.cancelsTouchesInView = NO;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2014-12-25
      相关资源
      最近更新 更多