我知道可以将 UIControlEventTouchUpInside 事件添加到特定对象,但是我该如何将此事件添加到整个类?
我已经使用 ElementButton 类创建了对象,我不想为每个单独的对象添加事件,因为这会导致很多不必要的代码。
我知道可以将 UIControlEventTouchUpInside 事件添加到特定对象,但是我该如何将此事件添加到整个类?
我已经使用 ElementButton 类创建了对象,我不想为每个单独的对象添加事件,因为这会导致很多不必要的代码。
您所指的是 iOS 对目标操作模式的实现。Target-action 仅适用于 UIControl 的子类,因此除非您ElementButton
是 UIControl 子类,否则您不能使用 UIControlEventTouchUpInside。
如果它实际上是一个 UIControl 子类,则除了为每个对象注册 UIControlEventTouchUpInside 之外,您不需要做任何额外的工作:
[yourButton addTarget:self selector:@selector(buttonTapped:) forEvent:UIControlEventTouchUpInside];
如果您还有其他问题,请告诉我。
尝试这个:-
将此方法添加到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
尝试将所有 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];
}
您不需要将方法添加到类或将方法单独添加到每个类。使用循环遍历所有按钮并使用 addTarget:selector:forEvent: 将方法分配给每个按钮。您可以使用一个插座集合,它会为您提供一个循环遍历的数组,或者您可以只循环遍历这些按钮的父视图的所有子视图(检查子视图是否属于正确的类)。