如何在 Xcode 5 中制作隐形按钮?

Posted

技术标签:

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

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

【问题讨论】:

隐藏按钮。 @Larme 这会扼杀触摸识别 ;) 【参考方案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");
    



【讨论】:

以上是关于如何在 Xcode 5 中制作隐形按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中制作关于音频的按钮?

如何制作隐形 Field Odoo 14

如何在 Xcode 5 for iOS 中保存和加载图像?

如何将按钮和图像放入 UIScrollView [关闭]

制作一个 UIVIew,它出现在 xcode 项目中的所有 .NIb 文件上

如何在 Xcode 5 中让两个按钮转到同一个 IBOutlet?