轉(zhuǎn)自:傳送門(mén)
寫(xiě)此文章只是為了以后我自己能更方便的復(fù)制粘貼.??????
上代碼
.h文件
#import <UIKit/UIKit.h>
typedef void(^ButtonClick/*這里名字隨意起,但是下面使用到的需要名字一致*/)(UIButton *button);
@interface UIButton (BtnClick)
/**
* 添加點(diǎn)擊事件
*/
- (void)addClick:(ButtonClick/*這里名字與block名字一致*/)block;
/**
* 可以自定義事件
*/
- (void)addAction:(ButtonClick/*這里名字與block名字一致*/)block forControlEvents:(UIControlEvents)controlEvents;
@end
.m文件
#import "BtnClick.h"
#import <objc/runtime.h>
@implementation UIButton (BtnClick)
static char ActionTag;
- (void)addClick:(ButtonClick/*這里名字與block名字一致*/)block {
[self addAction:block forControlEvents:UIControlEventTouchUpInside];
}
- (void)addAction:(ButtonClick/*這里名字與block名字一致*/)block forControlEvents:(UIControlEvents)controlEvents {
objc_setAssociatedObject(self, &ActionTag, block, OBJC_ASSOCIATION_COPY_NONATOMIC);
[self addTarget:self action:@selector(action:) forControlEvents:controlEvents];
}
- (void)action:(id)sender {
ButtonClick/*這里名字與block名字一致*/ blockAction = (ButtonClick/*這里名字與block名字一致*/)objc_getAssociatedObject(self, &ActionTag);
if (blockAction) {
blockAction(self);
}
}
@end
只是為了方便,嗯,就是這樣.直接復(fù)制粘貼即可~