注册 登录
筛选: 全部
主题 : UIButton+Block
级别: 精灵王

状态: 连续签到 - [5天]
UID: 5761
精华: 0
发帖: 832
可可豆: 37806 CB
威望: 38802 点
在线时间: 2093(时)
注册时间: 2009-05-16
最后登录: 2018-11-12
0 楼:  发表于: 2013-01-25 16:09    发自: Web Page

UIButton+Block   

管理提醒: 本帖被 ccsupport 从 代码例子区 移动到本区(2013-06-20)
  • 关键字UIbutton Block
  • 代码类库
此代码非原创,如果问题,欢迎修改后分享


将UIButton的addTarget: action: forControlEvents:改造成block
建立UIButton+Block,将其引用到.pch中,#import "UIButton+Block.h"


#import <Foundation/Foundation.h>
#import <objc/runtime.h>


typedef void (^ActionBlock)();

@interface UIButton(Block)

@property (readonly) NSMutableDictionary *event;

- (void) handleControlEvent:(UIControlEvents)controlEvent withBlock:(ActionBlock)action;

@end




#import "UIButton+Block.h"

@implementation UIButton(Block)

static char overviewKey;

@dynamic event;

- (void)handleControlEvent:(UIControlEvents)event withBlock:(ActionBlock)block {
    objc_setAssociatedObject(self, &overviewKey, block, OBJC_ASSOCIATION_COPY_NONATOMIC);
    [self addTarget:self action:@selector(callActionBlock:) forControlEvents:event];
}


- (void)callActionBlock:(id)sender {
    ActionBlock block = (ActionBlock)objc_getAssociatedObject(self, &overviewKey);
    if (block) {
        block();
    }
}


@end


http://dev.cocounion.com/
能吃能喝能睡
级别: 侠客
状态: 连续签到 - [11天]
UID: 141898
精华: 0
发帖: 115
可可豆: 221 CB
威望: 166 点
在线时间: 180(时)
注册时间: 2012-05-09
最后登录: 2016-06-03
1 楼:  发表于: 2013-01-31 23:19    发自: iPad
为什么我看不懂,解释一下呗


级别: 精灵王

状态: 连续签到 - [5天]
UID: 5761
精华: 0
发帖: 832
可可豆: 37806 CB
威望: 38802 点
在线时间: 2093(时)
注册时间: 2009-05-16
最后登录: 2018-11-12
2 楼:  发表于: 2013-02-01 09:16    发自: Web Page
引用
引用第1楼lhplastid于2013-01-31 23:19发表的  :
为什么我看不懂,解释一下呗



哪里看不懂自行google关键词。
都不到10行代码啊。
[ 此帖被lw223在2013-02-19 16:45重新编辑 ]

http://dev.cocounion.com/
能吃能喝能睡
级别: 精灵王

状态: 连续签到 - [8天]
UID: 1185
精华: 7
发帖: 145
可可豆: 25657 CB
威望: 25623 点
在线时间: 5079(时)
注册时间: 2008-11-01
最后登录: 2017-08-03
3 楼:  发表于: 2013-02-19 16:46    发自: Web Page
强~~~~~~~~~~~
旺财勇士
级别: 新手上路
UID: 139228
精华: 0
发帖: 24
可可豆: 111 CB
威望: 135 点
在线时间: 155(时)
注册时间: 2012-04-26
最后登录: 2018-01-17
4 楼:  发表于: 2013-02-27 14:41    发自: Web Page
MARK
级别: 新手上路
UID: 154404
精华: 0
发帖: 1
可可豆: 1 CB
威望: 1 点
在线时间: 11(时)
注册时间: 2012-07-13
最后登录: 2013-10-29
5 楼:  发表于: 2013-02-27 16:37    发自: Web Page
回 楼主(lw223) 的帖子
objc_setAssociatedObject(self, &overviewKey, block, OBJC_ASSOCIATION_COPY_NONATOMIC); 这一句报错,有objc_setAssociatedObject(); 这个关键字吗?
级别: 精灵王

状态: 连续签到 - [5天]
UID: 5761
精华: 0
发帖: 832
可可豆: 37806 CB
威望: 38802 点
在线时间: 2093(时)
注册时间: 2009-05-16
最后登录: 2018-11-12
6 楼:  发表于: 2013-02-27 16:42    发自: Web Page
回 5楼(1099315519) 的帖子
#import <objc/runtime.h>

这个试试
http://dev.cocounion.com/
能吃能喝能睡
级别: 新手上路
UID: 81223
精华: 0
发帖: 35
可可豆: 310 CB
威望: 260 点
在线时间: 437(时)
注册时间: 2011-07-14
最后登录: 2016-10-13
7 楼:  发表于: 2013-02-28 10:35    发自: Web Page
强悍的楼主
级别: 精灵王

UID: 47876
精华: 0
发帖: 1517
可可豆: 5147 CB
威望: 5418 点
在线时间: 1079(时)
注册时间: 2011-01-21
最后登录: 2019-02-02
8 楼:  发表于: 2013-02-28 14:02    发自: Web Page
mark~~~~~~~~~~~~~~~
级别: 新手上路
状态: 连续签到 - [6天]
UID: 288744
精华: 0
发帖: 12
可可豆: 60 CB
威望: 42 点
在线时间: 396(时)
注册时间: 2014-01-19
最后登录: 2017-03-15
9 楼:  发表于: 2014-08-01 23:55    发自: Web Page
这样写是方便的。但是有个印象说关联方法多少会影响点性能。

这个会影响吗。
只修电脑,不过夜。

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部