首先,创建一个继承与UIButton的类
.h文件中
#import <UIKit/UIKit.h>
@interface BlockButton : UIButton
//生命属性
@property (nonatomic, copy) void (^block)(UIButton *);
//添加带block的点击事件
- (void)addTapBlock:(void(^)(UIButton *button))block;
@end
.m文件中
#import "BlockButton.h"
@implementation BlockButton
- (instancetype)init{
self = [super init];
if (self) {
[self addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
//实现点击方法
- (void)addTapBlock:(void (^)(UIButton *))block{
self.block = block;
[self addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)buttonAction:(UIButton *)button{
if (self.block) {
self.block(button);
}
}
- (void)setBlock:(void (^)(UIButton *))block{
_block = block;
[self addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
}
@end
用法:
BlockButton *blockButton = [BlockButton buttonWithType:UIButtonTypeSystem];
[blockButton addTapBlock:^(UIButton *button) {
//在这里处理button的点击事件
}];