導語
我們寫項目時都需要使用- (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
自定義btn的點擊事件如果做一些特別簡單的操作 能直接使用回調(diào)進行處理的話既增加了代碼的閱讀性又減少了代碼量
思路
利用block來做回調(diào) ,
一,創(chuàng)建一個UIbutton
的類目 利用runtime 創(chuàng)建一個block屬性
typedef void(^chickTouchBlock)(void);
@property(nonatomic,strong)chickTouchBlock onechickBlock;
static chickTouchBlock _onechickBlock;
-(chickTouchBlock)onechickBlock{
return objc_getAssociatedObject(self, &_onechickBlock);
}
-(void)setOnechickBlock:(chickTouchBlock)onechickBlock{
objc_setAssociatedObject(self, &_onechickBlock, onechickBlock, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
ps:記得導入 #import <objc/runtime.h>
二,創(chuàng)建一個方法來實現(xiàn)UIbutton
點擊的回調(diào)
/**
給按鈕添加回調(diào)點擊事件
@param events 響應事件類型
@param chickBlock 回調(diào)block
*/
-(void)addShjWithControlEvens:(UIControlEvents)events ChickBlock:(chickTouchBlock)chickBlock;
方法的實現(xiàn)
-(void)addShjWithControlEvens:(UIControlEvents)events ChickBlock:(chickTouchBlock)chickBlock{
[self setOnechickBlock:chickBlock];
[self addTarget:self action:@selector(chickBtn) forControlEvents:events];
}
-(void)chickBtn{
if (self.onechickBlock) {
self.onechickBlock();
}
}
三,方法的使用
[self.chooseTimer addShjWithControlEvens:UIControlEventTouchUpInside ChickBlock:^{
NSLog(@"測試");
}];