為UIButton category添加點擊事件

轉(zhuǎn)自:傳送門
寫此文章只是為了以后我自己能更方便的復制粘貼.??????
上代碼

.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

只是為了方便,嗯,就是這樣.直接復制粘貼即可~

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,324評論 25 708
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,818評論 9 468
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,345評論 2 33
  • 20歲的姑娘,還沒褪去青春嫁衣,也未開始盤算自己的未來,心心戀戀自己對的那個人怎么還沒到來。20歲的姑娘喲,別傻了...
    湯石榴閱讀 182評論 0 0
  • 上周二感冒了,自己吃了消炎藥和感冒藥,周三忙了一天,感冒沒見好,有點發(fā)燒。晚上在老家的大姐打電話告訴我,老爹最近精...
    甚小松閱讀 275評論 2 0

友情鏈接更多精彩內(nèi)容