iOS中常用的驗證碼倒計時, 支付半小時倒計時.


在Ios注冊時候會需要一個發送驗證碼倒計時的需求.

timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(handleMaxShowTimer:) userInfo:nil repeats:YES];

    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

 

/*計時器方法*/

-(void)handleMaxShowTimer:(NSTimer *)theTimer{

    repeatCount--;

    

    NSString *timerText = [NSString stringWithFormat:@"%d",repeatCount];

    UIButton *tokenBtn = self.clickCodeButton;

    [tokenBtn setTitle:timerText forState:UIControlStateNormal];

    tokenBtn.enabled = NO;

    NSLog(@"%@", tokenBtn.titleLabel.text);

    if (repeatCount==0) {

        repeatCount = 60;

        [timer invalidate];

        timer = nil;

        tokenBtn.enabled = YES;

        [tokenBtn setTitle:@"驗證碼" forState:UIControlStateNormal];

    }

}

 

 

在支付的時候我們會遇到半小時后不支付,重置時間,下面就寫了一個半小時倒計時

- (void)secondsCountDown:(UILabel *)label

{

    __block int timeout = 1800;

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);

    dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0*NSEC_PER_SEC, 0);//每秒執行

    dispatch_source_set_event_handler(_timer, ^{

        if (timeout<=0) {

            dispatch_source_cancel(_timer);

            dispatch_async(dispatch_get_main_queue(), ^{

                NSLog(@"計時結束");

            });

        }else {

            int minutes = timeout/60;

            int seconds = timeout%60;

            NSString *strTime = [NSString stringWithFormat:@"%d 分鍾 %d ", minutes, seconds];

            dispatch_async(dispatch_get_main_queue(), ^{

                

                label.text = [NSString stringWithFormat:@"支付剩余時間  %@",strTime];

                

            });

            timeout--;

        }

    });

    dispatch_resume(_timer);

}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM