有啥办法可以抓住我按下的按钮?

Posted

技术标签:

【中文标题】有啥办法可以抓住我按下的按钮?【英文标题】:Any way I can get hold of which button I have pressed?有什么办法可以抓住我按下的按钮? 【发布时间】:2012-01-05 03:36:35 【问题描述】:

有什么方法可以让我知道我按下了哪个按钮?

按钮是使用 for 循环以编程方式创建的。

我有一个图像滚动视图(我使用图像按钮),其中图像是用户从相机拍摄的。因此,用户拍照后,“新”图片将与“旧”图片一起出现在滚动视图中。图片被缩小成更小的尺寸,所以我想要的是,当我单击(任何图像的)按钮时,图像会以实际大小在另一个视图中弹出。

图像按钮是使用 for 循环创建的。但是,我不知道如何抓住用户按下的按钮。现在,当我按下按钮时(无论是哪个图像/按钮),最后一张拍摄的照片都会显示出来。

感谢您的宝贵时间。

【问题讨论】:

你很好地解释了你的问题......但是如果你添加一些相关部分的代码段总是更好,这样这里的人们就可以很容易地理解你卡在哪里了。 【参考方案1】:

您可以使用按钮的标签属性。

创建按钮时,为每个图像按钮添加标签。

for(int i = 0 ; i < your_no_images ; i++)
  UIButton *button = [UIButton <yourbuttontype>];
 -----
  button.tag   = i;
  [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
  [yourView addSubView:button];

现在在按钮点击动作中..

-(void)buttonClicked:(UIButton*)sender
   //if you has an array of UIImage's
   UIImage *clickedImage = (UIImage *)[yourImageArray objectAtIndex:sender.tag];

【讨论】:

您好,感谢您的回复(:但是我的应用程序在到达按钮单击操作时崩溃了。 在 buttonClicked 函数中设置断点,看是否被执行 这是我犯的一个小错字。代码工作正常!非常感谢您的帮助(:【参考方案2】:

IBAction 方法(例如在单击按钮时触发的方法)包含一个 sender 参数。 sender 是触发动作的对象,例如被点击的按钮。像这样:

- (IBAction)buttonWasClicked:(id)sender

    NSLog(@"The %@ button was clicked", (UIButton *)sender.currentTitle);

【讨论】:

OP 在问题中解释说,他/她在 for 循环中以编程方式创建按钮。那里没有 Interface Builder 或 IBAction IBAction 无论如何都是无效的。这只是对 IB 的一个提示。我发布的方法对以编程方式创建的按钮的工作方式与对在 Interface Builder 中创建的按钮的工作方式相同。答案的相关部分是sender 参数。

以上是关于有啥办法可以抓住我按下的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何从与我按下的按钮位于同一行的单元格中获取值

我的问题是当我按下清除按钮时,它只是清除文本字段而不是之前按下的数字的数据

如何在不抬起手指的情况下更改我按下的按钮? (在LibGDX中)

PyQt5中的按钮连接有啥问题?

当我按下“。”时,Visual Studio Code 自动完成。钥匙。有啥办法禁用吗?

单击按钮后,ImGui 冻结