iOS开发-防止UIButton重复点击

在iOS开发中,防止UIButton重复点击是常见需求,例如避免网络请求被多次触发或性能问题。本文介绍了三种解决方案:方案一逻辑清晰但耦合度高,方案二会导致延迟,而方案三通过UIControl的category实现了一劳永逸的效果,避免影响其他UIControl子类的正常使用。
摘要由CSDN通过智能技术生成

前言

在iOS开发中,有几个实际业务场景需要控制 UIButton 响应事件的时间间隔:

  1. 当点击按钮后会执行网络请求时,若请求耗时稍长,用户往往会再点一次。这样,就执行了两次请求,造成了资源浪费。
  2. 当移动终端性能较差时,连续点击按钮会执行多次事件(比如 push 出来多个viewController)。
  3. 防止用户暴力点击,不停的点击。

方案

控制 UIButton 响应事件时间间隔的方案不止一种。

方案一:

- (void)buttonAction:(UIButton *)btn
{
    btn.enabled = NO;
    //TODO:...
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        btn.enabled = YES;
    });
}

这个方案在逻辑上比较清晰、易懂,但代码分散,常常涉及多个方法,多个状态,多种判断,耦合严重。 

方案二:

- (void)buttonAction:(UIButton *)btn
{
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(buttonClickedAction:)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值