2

我在 Interface Builder 中设置了三个按钮,每个按钮都通过 touchUpInside 绑定到 btnSelection:

- (IBAction)btnSelection:(id)sender {
    NSLog(@"tag: %i", [sender tag]);
}

在我的控制台中,第一次单击正确注册(大约一秒钟后延迟,这似乎有点奇怪),但随后触摸 3 个按钮中的任何一个都会导致首先记录前一个标签值,然后再记录新标签。

触摸#1(btn w/tag=0):

标签:0

触摸#2(btn w/tag=1):

标签:0 标签:1

触摸#3(btn w/tag=2):

标签:1 标签:2

等等。

我无法弄清楚为什么每次都会记录两个事件(第一个是先前触摸的按钮。

4

4 回答 4

3

一个可能的原因是,如果您将按钮连接到事件,然后复制该按钮并再次连接事件,您可能会调用您的btnSelection函数两次。

在界面生成器中,检查您是否只有一个回调btnSelection

于 2009-08-06T21:16:09.243 回答
1

我知道这不包含在问题中,但如果您可能在自定义 uitableviewcell 中有一个 uibutton,请确保在设置单元格以供重用时不要弄乱选择设置。(弄乱设置为重用的单元格会使单元格中的所有子视图变得怪异,并使事情堆积或使按钮之类的东西在它们真正重新加载单元格时看起来会切换)在第一次自定义单元格格式时弄乱这些事情或在您的细胞制成后

于 2013-05-06T21:25:38.673 回答
1

在你的回调中放置一个断点,看看调用来自哪里。您所描述的内容在 1000 个应用程序中的 100 个中效果很好——不知何故,您将您的例程称为 2x。

(无意冒犯,但这是您的代码。:)

于 2010-12-23T00:30:40.560 回答
0

这很可能与您在 Interface Builder 中所犯的错误有关。我已经看到这种情况发生在例如单击视图中的按钮但下一个视图有一些问题,例如当您复制和粘贴一些 IB 对象时断开的 IBOutlet 连接。对项目进行断点将导致对 IBAction 的 3 次调用然后死亡。

于 2013-07-14T11:51:20.623 回答