有啥办法可以抓住我按下的按钮?
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中)