检测所有按钮的单一控制

时间:2014-05-01 03:28:00

标签: ios uibutton uicontrolevents

我知道我可以通过添加像这样的选择器来检测我的按钮是否被按下

[button addTarget:self action:@selector(buttonDown:) forControlEvents:UIControlEventTouchDown];

但是在一个视图中有50多个按钮我想知道是否有一种方法可以在我的视图中为所有按钮添加一个选择器,看看是否按下按钮以及是哪个按钮。 / p>

我想知道因为我需要在50多个按钮上检测UIControlEventTouchDown和UIControlEventTouchUpInside,这样很多代码就像缩短了一样。

1 个答案:

答案 0 :(得分:1)

使用数组。

for (UIButton *button in self.arrayOfButtons) {
    [button addTarget:self 
               action:@selector(buttonDown:) 
     forControlEvents:UIControlEventTouchDown];

    [button addTarget:self 
               action:@selector(buttonUp:)  // it's cold outside
     forControlEvents:UIControlEventTouchUpInside];
}

您的buttonDown:buttonUp:方法应如下所示:

- (void)buttonDown:(id)sender

OR

- (void)buttonDown:(UIButton *)button

无论哪种方式,senderbutton都将成为对调用该方法的对象的引用。

如果您有btnFoobtnBar并且您为触地事件提供了buttonDown:,那么senderbutton会告诉您哪个按下按钮进入方法。

要更全面地了解正在发生的事情,请为所有按钮添加标记,并在方法中输入以下代码:

NSLog(@"Button.tag = %d", button.tag);