我知道我可以通过添加像这样的选择器来检测我的按钮是否被按下
[button addTarget:self action:@selector(buttonDown:) forControlEvents:UIControlEventTouchDown];
但是在一个视图中有50多个按钮我想知道是否有一种方法可以在我的视图中为所有按钮添加一个选择器,看看是否按下按钮以及是哪个按钮。 / p>
我想知道因为我需要在50多个按钮上检测UIControlEventTouchDown和UIControlEventTouchUpInside,这样很多代码就像缩短了一样。
答案 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
无论哪种方式,sender
或button
都将成为对调用该方法的对象的引用。
如果您有btnFoo
和btnBar
并且您为触地事件提供了buttonDown:
,那么sender
或button
会告诉您哪个按下按钮进入方法。
要更全面地了解正在发生的事情,请为所有按钮添加标记,并在方法中输入以下代码:
NSLog(@"Button.tag = %d", button.tag);