如何在 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 中制作隐形按钮?的主要内容,如果未能解决你的问题,请参考以下文章