java教程按钮事件_runtime实现按钮点击事件

也不能说是实现吧,,,就是有点类似于RAC里边的写法,不用给btn添加另外的点击事件,就那个add...select...这样子很不友好,来看下代码:

[self.btn handleControlEvent:UIControlEventTouchUpInside withBlock:^{

NSLog(@"2%@",click);

}];

差不多就是这个意思,当然了,此处还是预留了event,RAC直接连这个都没了,具体可以看这里

那么,问题来了,怎么实现呢?

首先,我们对系统的的UIButton做一个category,

371233d8b734bd78a72a3ccc0cf9bd6d.png

然后,写点击事件:

.h

#import

typedef void(^ActionBlock)(void);

@interface UIButton (ClickBlock)

- (void)handleControlEvent:(UIControlEvents)event withBlock:(ActionBlock)block;

@end

.m

#import "UIButton+ClickBlock.h"

#import

@implementation UIButton (ClickBlock)

- (void)handleControlEvent:(UIControlEvents)event withBlock:(ActionBlock)block

{

if(!event)

event=UIControlEventTouchUpInside;

objc_setAssociatedObject(self, &"myBlock", block, OBJC_ASSOCIATION_COPY_NONATOMIC);

[self addTarget:self action:@selector(blockEvent:) forControlEvents:event];

}

-(void)blockEvent:(UIButton *)sender

{

ActionBlock block=objc_getAssociatedObject(self, &"myBlock");

if(block)

{

block();

}

}

此处只是demo哈!

这样子我们就可以按照之前的思路,写出来不分离的btnclick了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值