2

我知道可以将 UIControlEventTouchUpInside 事件添加到特定对象,但是我该如何将此事件添加到整个类?

我已经使用 ElementButton 类创建了对象,我不想为每个单独的对象添加事件,因为这会导致很多不必要的代码。

4

4 回答 4

3

您所指的是 iOS 对目标操作模式的实现。Target-action 仅适用于 UIControl 的子类,因此除非您ElementButton是 UIControl 子类,否则您不能使用 UIControlEventTouchUpInside。

如果它实际上是一个 UIControl 子类,则除了为每个对象注册 UIControlEventTouchUpInside 之外,您不需要做任何额外的工作:

[yourButton addTarget:self selector:@selector(buttonTapped:) forEvent:UIControlEventTouchUpInside];

如果您还有其他问题,请告诉我。

于 2013-08-06T04:21:07.950 回答
2

尝试这个:-

将此方法添加到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

于 2013-08-06T06:26:16.780 回答
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];
}
于 2013-08-06T05:31:25.937 回答
0

您不需要将方法添加到类或将方法单独添加到每个类。使用循环遍历所有按钮并使用 addTarget:selector:forEvent: 将方法分配给每个按钮。您可以使用一个插座集合,它会为您提供一个循环遍历的数组,或者您可以只循环遍历这些按钮的父视图的所有子视图(检查子视图是否属于正确的类)。

于 2013-08-06T05:32:36.867 回答