iOS短信驗(yàn)證碼倒計(jì)時(shí)Button的實(shí)現(xiàn)

注:本人第一次在簡(jiǎn)書上發(fā)表文章,共勉



Update 12-20 2016

運(yùn)行中,會(huì)一直走,但是真機(jī)推到后臺(tái)不會(huì)變,如果需要實(shí)現(xiàn)同時(shí),Google到一個(gè)(已測(cè)試):

如果有好的方法也可以留言告訴我,不勝感激...

CFAbsoluteTimestart =CFAbsoluteTimeGetCurrent();

if((start -_time) >1.5&& [strTimeintValue] >1&& [strTimeintValue] <30) {

intnum = (int)ceil(start -_time);

timeout = timeout - num +1;

strTime = [NSStringstringWithFormat:@"%zd", [strTimeintValue] - num];

timeout--;

if(timeout <0) {

return;

}

}

_time=CFAbsoluteTimeGetCurrent();

加在

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

[_btnsetTitle:[NSStringstringWithFormat:@"%@",strTime]forState:UIControlStateNormal];

_btn.backgroundColor= [UIColorgrayColor];

_btn.userInteractionEnabled=NO;

Update? 07.15.2016

親測(cè),退到后臺(tái)在進(jìn)入定時(shí)器仍然再走,時(shí)間對(duì)應(yīng)減少!別再問了,最后提供一個(gè)Demo? ps: 親們,遇到問題多動(dòng)手,學(xué)習(xí)新知識(shí),多動(dòng)手!



1.最終實(shí)現(xiàn)的鮮果如下圖所示:


2.主要是在Button的Event里面添加下列代碼:

? ? - (IBAction)sendEvent:(id)sender {

__block int timeout=30; //倒計(jì)時(shí)時(shí)間

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); //每秒執(zhí)行

dispatch_source_set_event_handler(_timer, ^{

if(timeout<=0){ //倒計(jì)時(shí)結(jié)束,關(guān)閉

dispatch_source_cancel(_timer);

dispatch_async(dispatch_get_main_queue(), ^{

//設(shè)置界面的按鈕顯示 根據(jù)自己需求設(shè)置

[_countdownButton setTitle:@"發(fā)送驗(yàn)證碼" forState:UIControlStateNormal];

_countdownButton.backgroundColor = [UIColor orangeColor];

_countdownButton.userInteractionEnabled = YES;

});

}else{

//? ? ? ? ? ? int minutes = timeout / 60;

int seconds = timeout % 59;

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

dispatch_async(dispatch_get_main_queue(), ^{

//設(shè)置界面的按鈕顯示 根據(jù)自己需求設(shè)置

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

[_countdownButton setTitle:[NSString stringWithFormat:@"%@",strTime] forState:UIControlStateNormal];

_countdownButton.backgroundColor = [UIColor grayColor];

_countdownButton.userInteractionEnabled = NO;

});

timeout--;

}

});

dispatch_resume(_timer);

}

(Update? 07.15.2016)(Update? 07.15.2016)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容