为UIButton category添加点击事件

转自:传送门
写此文章只是为了以后我自己能更方便的复制粘贴.😁😆😆
上代码

.h文件

#import <UIKit/UIKit.h>

typedef void(^ButtonClick/*这里名字随意起,但是下面使用到的需要名字一致*/)(UIButton *button);
@interface UIButton (BtnClick)

/**
* 添加点击事件
*/
- (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

只是为了方便,嗯,就是这样.直接复制粘贴即可~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,079评论 25 709
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,760评论 9 468
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,182评论 2 33
  • 20岁的姑娘,还没褪去青春嫁衣,也未开始盘算自己的未来,心心恋恋自己对的那个人怎么还没到来。20岁的姑娘哟,别傻了...
    汤石榴阅读 1,092评论 0 0
  • 上周二感冒了,自己吃了消炎药和感冒药,周三忙了一天,感冒没见好,有点发烧。晚上在老家的大姐打电话告诉我,老爹最近精...
    甚小松阅读 1,430评论 2 0