我知道可以将UIControlEventTouchUpInside事件添加到特定对象,但是我怎样才能将此事件添加到整个类?
我已经使用ElementButton类创建了对象,我不希望为每个单独的对象添加事件,因为这会导致大量不必要的代码。
答案 0 :(得分:3)
你所指的是iOS对目标 - 动作模式的实现。目标操作仅适用于UIControl的子类,因此除非您的ElementButton
是UIControl子类,否则不能使用UIControlEventTouchUpInside。
如果它实际上是一个UIControl子类,除了为每个对象注册UIControlEventTouchUpInside之外,你不需要做任何额外的工作:
[yourButton addTarget:self selector:@selector(buttonTapped:) forEvent:UIControlEventTouchUpInside];
如果您有任何其他问题,请告诉我。
答案 1 :(得分:1)
试试这个: -
将此方法添加到 ElementButton 类:
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
[self addTarget:nil action:@selector(ownMethod) forControlEvents:UIControlEventTouchUpInside];
if (self) {
// Initialization code
}
return self;
}
要在任何类中使用UIControlEventTouchUpInside调用的ownMethod
答案 2 :(得分:0)
尝试在数组中添加所有ElementButtons并在for loop
中完成它们:
for (ElementButton *yourButton in myArray) {
[yourButton addTarget:self selector:@selector(buttonTapped:) forEvent:UIControlEventTouchUpInside];
}
要获取所有ElementButtons:
for (ElementButton *button in [self.view subviews]) {
if(!yourArray) yourArray = [[NSMutableArray alloc]init];
[yourArray addObject:button];
}
答案 3 :(得分:0)
您不需要将方法添加到类中,也不需要为每个方法单独添加方法。使用循环遍历所有按钮并使用addTarget:selector:forEvent:将方法分配给每个按钮。您可以使用一个插座集合,它将为您提供循环播放的数组,或者您可以循环浏览这些按钮的超级视图的所有子视图(检查子视图是否属于正确的类)。