国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS實現(xiàn)短信驗證碼倒計時

2019-10-21 18:22:01
字體:
供稿:網(wǎng)友

在開發(fā)中,經(jīng)常在需要用戶注冊的時候會需要實現(xiàn)驗證碼倒計時的功能,下面是解決這個問題的兩種思路(使用UIButton控件)

一、利用NSTimer計時器

1.新建一個UIButton按鈕,設(shè)置成屬性,名為codeButton。(UIButton樣式一定要為自定義,否則后面倒計時數(shù)秒時會出現(xiàn)閃爍現(xiàn)象)

2.定義一個NSTimer的屬性,名為timer,同時定義一個用于計時的int變量time,設(shè)置初始值為60。

//啟動一個定時器self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(operatePerSecond) userInfo:nil repeats:YES]; //實現(xiàn)定時器中的方法- (void)operatePerSecond {    if (time == 1) {      [self.timer invalidate];      time = 60;      [self.codeButton setTitle:@"重新獲取" forState:UIControlStateNormal];      self.codeButton.tintColor = [UIColor blackColor];      self.codeButton.enabled = YES;    }else {      time --;      [self.codeButton setTitle:[NSString stringWithFormat:@"%ds" ,time] forState:UIControlStateNormal];    }}

3.此時主要邏輯已經(jīng)完成,但要記得:在本頁面即將消失的時候也要停掉計時器self.timer。

二、利用GCD實現(xiàn)

1.定義一個用于計時的time(此時要用block修飾)---  block int time = 60;

  //倒計時時間  __block int timeout = 60;  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_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);  dispatch_source_set_event_handler(timer, ^{    if(timeout == 1){      //倒計時結(jié)束,關(guān)閉      dispatch_source_cancel(timer);      dispatch_async(dispatch_get_main_queue(), ^{      timeout = 60;      [self.codeButton setTitle:@"重新獲取" forState:UIControlStateNormal];      self.codeButton.tintColor = [UIColor blackColor];      self.codeButton.enabled = YES;      });    }else{      NSString *strTime = [NSString stringWithFormat:@"%ds",timeout];      dispatch_async(dispatch_get_main_queue(), ^{        [self.codeButton setTitle:strTime forState:UIControlStateNormal];      });      timeout--;    }  });dispatch_resume(timer);

2.把上述代碼寫入點擊方法中即可實現(xiàn)倒計時效果。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 平和县| 乌审旗| 工布江达县| 会同县| 和平县| 牟定县| 乐都县| 大方县| 县级市| 岑溪市| 德保县| 宜宾县| 灵山县| 平顺县| 达日县| 岗巴县| 汝州市| 神池县| 乌鲁木齐县| 安徽省| 额敏县| 新密市| 开远市| 垦利县| 柞水县| 江油市| 修文县| 嘉义市| 民丰县| 尖扎县| 泸西县| 德州市| 清流县| 方山县| 秦皇岛市| 元氏县| 黄石市| 通江县| 曲沃县| 石河子市| 桦甸市|