【问题标题】:UI Tap Gesture Recognizer Not working does not know which View it was tappedUI Tap Gesture Recognizer 不工作不知道它被点击了哪个View
【发布时间】:2014-10-30 06:51:40
【问题描述】:

我有 6 个不同的视图,我给它们标记了 1、2、3、4、5、6。我将对象库中的UITapGestureRecogniser 添加到情节提要中,并通过CTRL+将视图从视图拖到UITapGestureRecogniser 来制作所有6 个视图gestureRecognizers。 现在在下面的方法中,我试图通过点击不同的视图来获取标签。

 - (IBAction)colorTapRecognizer:(UITapGestureRecognizer *)sender {
        UIView *tappedView= sender.view;
        NSLog(@"%d",tappedView.tag  );

    }

但它总是向我显示相同的标签。即,如果我第一次点击它是3,那么点击其他视图也是一样的。

【问题讨论】:

  • 你在哪里添加的?请提供一些代码。
  • 我是从对象库中添加的。实际上,我将它放在其中一个视图上,然后 CTRL+将其他人拖到底部栏上的“点击手势识别器”
  • 您必须为每个视图使用不同的手势识别器
  • 所以这意味着如果有 30 个不同的自定义视图,即扑克牌,所以我需要为每个视图添加单独的 TapGesture 识别器?
  • 以及参考出口收藏的目的是什么?

标签: objective-c iphone ios8 uigesturerecognizer uitapgesturerecognizer


【解决方案1】:

每个视图都需要自己的手势识别器集。这是一段应该适合你的代码。

-(void)addTapGesturesToViews
{
    int maxViewTag = 6; // tags must be consective (are in your case)
    for(int i =1; i<= maxViewTag;i++)
    {
        UIView * view = [self.view viewWithTag:i];
        UITapGestureRecognizer * tapGest = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(colorTapRecognizer:)];
        tapGest.numberOfTapsRequired = 1;
        [view addGestureRecognizer:tapGest];
    }

}

【讨论】:

    猜你喜欢
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多