ios按钮事件的block封装

这篇博客介绍了如何通过Block来封装UIButton的事件处理,旨在解决代码中按钮事件分散的问题,提高代码的可读性和组织性。作者提供了详细的代码实现,包括一个UIButton的分类,允许直接在按钮初始化时设置Block来处理事件,简化了传统添加target-action的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按钮的生成和事件经常要被分开放,经常两头找,很浪费时间,而且不直观,对于处女座程序员来说这是不能忍的!(我不是处女座。。)

 [button addTarget:selfaction:@selector(event)forControlEvents:UIControlEventTouchUpInside];


/*balabalabala  一大堆代码*/


-(void)event

{

//这里写按钮事件

}


这样的写法是不是不太方便呢,假如中间穿插了很多控件,那么按钮和方法就活生生的被分开了,他们其实是很想在一起的,相信我!


好吧,我要来成人之美了 ~~~


先上用法 

  UIButton *button =[[UIButton alloc]init];

    [button addAcionBlock:^{

        //这里写按钮事件

    }];

是不是永不分离了呢。


原理就是用block啦,接下来上我封装的分类,参考了网上的资料,不过忘了原作者是谁,罪过罪过。

下面是我自己建的category     大家也可以自己命名。


  UIButton+actionBlock.h--------------------这是.h文件


#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h>

#import <objc/runtime.h>


@interface UIButton (actionBlock)

-(void)addAcionBlock:(VoidBlock)action;

@end


  UIButton+actionBlock.h--------------------这是.m文件


#import "UIButton+actionBlock.h"

@implementation UIButton (actionBlock)


static char overviewKey;


- (void)addAcionBlock:(VoidBlock)action

{

    objc_setAssociatedObject(self, &overviewKey, action,OBJC_ASSOCIATION_COPY_NONATOMIC);

    [selfaddTarget:selfaction:@selector(callActionBlock:)forControlEvents:UIControlEventTouchUpInside];

}

- (void)callActionBlock:(id)sender {

    VoidBlock block = (VoidBlock)objc_getAssociatedObject(self, &overviewKey);

    if (block) {

        block();

    }

}

@end




大家可以拷贝这两个文件的代码到你们创建的分类里,相应的import,就可以使用啦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值