iOS發送短信後驗證碼倒計時

// 開始倒計時

- (void)startTime {

    __block int timeout=59; //倒計時時間

    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(), ^{

                //設置界面的按鈕顯示 根據自己需求設置(倒計時結束後調用)

                [self.getNumber setTitle:@"獲取驗證碼" forState:UIControlStateNormal];

                //設置不可點擊

                self.getNumber.userInteractionEnabled = YES;

                //                self.getNumber.backgroundColor = [UIColor orangeColor];

                

            });

        }else{

            //            int minutes = timeout / 60;    //這裏註釋掉了,這個是用來測試多於60秒時計算分鐘的。

            int seconds = timeout % 60;

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

            dispatch_async(dispatch_get_main_queue(), ^{

                //設置界面的按鈕顯示 根據自己需求設置

                NSLog(@"____%@",strTime);

                [self.getNumber setTitle:[NSString stringWithFormat:@"%@",strTime] forState:UIControlStateNormal];

                //設置可點擊

                self.getNumber.userInteractionEnabled = NO;

                //                self.getNumber.backgroundColor = [UIColor lightGrayColor];

            });

            timeout--;

        }

    });

    

    dispatch_resume(_timer);

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章