【问题标题】:How to make invisible buttons in Xcode 5?如何在 Xcode 5 中制作隐形按钮?
【发布时间】:2014-03-07 17:38:46
【问题描述】:

我正在尝试制作一个问答游戏。我将 xib 视图转换为 Image View 以放置我预先制作的问题图像之一。放置图像后,我选择一个按钮并将其放置在图像上。但是,按钮完全取代了图像。即使将按钮类型设置为自定义后,我也看不到图像。这个想法只是放置四个不可见的按钮,然后根据答案继续下一个问题或显示错误的答案图像。感谢您的帮助。

【问题讨论】:

  • 隐藏按钮。
  • @Larme 这会扼杀触摸识别 ;)

标签: ios uiimageview xcode5


【解决方案1】:

为什么不使用点击手势识别器?

选项 1

第 1 步:将 tapGestureRecognizer 添加到图像视图

for (UIImageView * v in @[v1, v2, v3, v4]) {
    UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
    tap.numberOfTapsRequired = 1;
    [self.view addGestureRecognizer:tap];
}

第 2 步:接收点击次数

- (void) handleTap:(UITapGestureRecognizer *)tap {
    if (tap.view == v1) {
        NSLog(@"V1 was tapped");
    }
    else if (tap.view == v2) {
        NSLog(@"V2 was tapped");
    }
    else if (tap.view == v3) {
        NSLog(@"V3 was tapped");
    }
    else if (tap.view == v4) {
        NSLog(@"V4 was tapped");
    }
}

选项 2 - Michael Knudsen 的回答

这是 Michael 建议的替代方法

第 1 步:将 tapGestureRecognizer 添加到图像视图

UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
tap.numberOfTapsRequired = 1;
[imageViewsParentView addGestureRecognizer:tap];

第 2 步:接收点击次数

- (void) handleTap:(UITapGestureRecognizer *)tap {
    CGPoint positionInView = [tap locationInView:tap.view];

    if (CGRectContainsPoint(v1.frame, positionInView)) {
        NSLog(@"V1 was tapped");
    }
    else if (CGRectContainsPoint(v2.frame, positionInView)) {
        NSLog(@"V2 was tapped");
    }
    else if (CGRectContainsPoint(v3.frame, positionInView)) {
        NSLog(@"V3 was tapped");
    }
    else if (CGRectContainsPoint(v4.frame, positionInView)) {
        NSLog(@"V4 was tapped");
    }    
}

【讨论】:

    【解决方案2】:

    您可以通过某种方式使您的视图透明来解决它。但是,我建议另一种解决方案:添加一个 UITapGestureRecognizer ,并且每当它感应到点击时,检查它的坐标是否在所需区域之一内(对应于您想象的按钮)。

    【讨论】:

      【解决方案3】:

      您可以使用 touchesBegan 方法来检测被点击的图像。

      -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
      {
          UITouch *touch = [touches anyObject];
          if([touch view] == answerImg1) //answerImg1 as your first image
          {
              // Do whatever you want when first image tapped
          }
          else if([touch view] == answerImg2)
          {
               // Do whatever you want when second image tapped
          }
          else if([touch view] == answerImg3)
          {
              // Do whatever you want when third image tapped
          }
          else
          {
              NSLog(@"Other view tapped");
          }
      
      
      }
      

      【讨论】:

        猜你喜欢
        • 2013-09-28
        • 2014-09-26
        • 2013-08-25
        • 2015-01-16
        • 2012-02-07
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        相关资源
        最近更新 更多