我如何在 objective c 中覆盖 UIButton 的 addTarget 方法
How I can override addTarget method of UIButton in objective c
我想要 UIButton TouchUpInside 控件事件的相同操作。例如:
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
我想在整个应用程序中概括 buttonAction
。执行此操作的最佳方法是什么。这可能使用类别吗?还是子类化?
提前致谢。
您可以在 class 中添加此方法并将 class 名称放入目标中。
YourClass *class = [YouClass alloc]init];
[button addTarget:class action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
或者您可以使用这样的访问器获得 class
[button addTarget:[A getClassA] action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
@implementation A
+(YouClass *) getClassA{
//get instance if already initialized or init it
//and return the instance
}
@end
解决方案取决于您想要实现的目标。如果您想要一个通用操作来修饰整个应用程序中使用按钮的事件,那么使用类别就可以了。
当您想向基础 class 添加新行为(例如向按钮添加自定义布局)时,Sub-classing 非常有用。
希望对您的方法有所帮助!
我想要 UIButton TouchUpInside 控件事件的相同操作。例如:
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
我想在整个应用程序中概括 buttonAction
。执行此操作的最佳方法是什么。这可能使用类别吗?还是子类化?
提前致谢。
您可以在 class 中添加此方法并将 class 名称放入目标中。
YourClass *class = [YouClass alloc]init];
[button addTarget:class action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
或者您可以使用这样的访问器获得 class
[button addTarget:[A getClassA] action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
@implementation A
+(YouClass *) getClassA{
//get instance if already initialized or init it
//and return the instance
}
@end
解决方案取决于您想要实现的目标。如果您想要一个通用操作来修饰整个应用程序中使用按钮的事件,那么使用类别就可以了。 当您想向基础 class 添加新行为(例如向按钮添加自定义布局)时,Sub-classing 非常有用。
希望对您的方法有所帮助!