美文网首页
iOS防止按钮重复点击

iOS防止按钮重复点击

作者: GuiiLiin | 来源:发表于2020-06-17 16:39 被阅读0次

    设置enableduserInteractionEnabled属性

    - (void)ClickBtn:(UIButton *)sender {
        NSLog(@"按钮点击...");
        sender.enabled = NO;
        
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            sender.enabled = YES;
        });
    }
    

    借助cancelPreviousPerformRequestsWithTarget:selector:object实现

    // 此方法会在连续点击按钮时取消之前的点击事件,从而只执行最后一次点击事件
    + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument;
    // 多长时间后做某件事情
    - (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
    
    /** 方法一 */
    - (void)ClickBtn:(UIButton *)sender {
        NSLog(@"按钮点击了...");
        // 此方法会在连续点击按钮时取消之前的点击事件,从而只执行最后一次点击事件
        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(buttonClickedAction:) object:sender];
        // 多长时间后做某件事情
        [self performSelector:@selector(buttonClickedAction:) withObject:btn afterDelay:2.0];
    }
     
    - (void)buttonClickedAction:(UIButton *)sender {
        NSLog(@"真正开始执行业务 - 比如网络请求...");
    }
    

    还可以使用runtime去实现

    相关文章

      网友评论

          本文标题:iOS防止按钮重复点击

          本文链接:https://www.haomeiwen.com/subject/hopsxktx.html