iOS常用技术 —获取验证码 倒计时 实现
来源:互联网 发布:新网域名管理后台 编辑:程序博客网 时间:2024/05/14 15:54
在用户登录界面,通常都会设置一个获取验证码Button,用户点击时,客户端需要改变button的显示样式。主要是三件事:
- 显示倒计时
- 取消button的用户响应
- 倒计时结束,恢复事件响应
主要实现如下:
- 在Button的点击事件中,实例化一个NSTimer计时器
#definte Countdown 60 // 每一秒调用 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(changeButtonText) userInfo:nil repeats:YES];
- 实现计时器方法
//当点击获取验证码后调用此方法,先改变按钮状态 -(void)changeButtonText{ //默认开始的时间为60秒 if(number == 0){ //倒计时结束,恢复button的第一响应 number = Countdown; _isOneClick = NO; //使用自定义的标识,判断button当前点击状态。倒计时结束,可点击,置为no // 使timer无效 [timer invalidate]; // 开启与用户的交互 self.timeBtn.userInteractionEnabled = YES; //恢复第一响应者状态 self.timeBtn.enabled = YES; [self.timeBtn setTitle:@"获取验证码" forState:UIControlStateNormal]; //设置标题 // self.timeBtn.backgroundColor = CodeColor; //设置颜色 }else{ //当倒计时未结束时,每次过一秒钟,界面显示的数字减少一秒 number --; //从60开始倒计时 // 关闭与用户的交互 self.timeBtn.userInteractionEnabled = NO; [self.timeBtnsetTitle:[NSStringstringWithFormat:@"重新获取(%d秒)",number] forState:UIControlStateNormal]; //将number时间设置成 timebtn的标题 [self.timeBtnsetBackgroundColor:[UIColorgrayColor]]; } }
第一次实现,比较复杂,后期有待优化。。
在后期测试时,发现NSTimer的倒计时,在后台运行时,会暂停。实际应该是继续计时。通过查找资料,并实验后,发现了以下方法,可以解决 App后台运行时倒计时失效问题 。
在 application: applicationDieEnterBackground 中添加 以下代码:
// App进入后台- (void)applicationDidEnterBackground:(UIApplication *)application { //进入后台倒计时 UIApplication* app = [UIApplication sharedApplication]; __block UIBackgroundTaskIdentifier bgTask; bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ dispatch_async(dispatch_get_main_queue(), ^{ if (bgTask != UIBackgroundTaskInvalid) { bgTask = UIBackgroundTaskInvalid; } }); }]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_async(dispatch_get_main_queue(), ^{ if (bgTask != UIBackgroundTaskInvalid) { bgTask = UIBackgroundTaskInvalid; } }); });}
再测试,发现即使进入后台,倒计时也能继续了。
0 0
- iOS常用技术 —获取验证码 倒计时 实现
- iOS 获取验证码倒计时
- iOS -- 倒计时获取验证码
- iOS GCD实现获取验证码的倒计时
- IOS 获取验证码倒计时(timer)
- iOS-获取验证码中的倒计时功能
- iOS 之获取短信验证码倒计时
- iOS 开发获取验证码倒计时
- android获取验证码实现倒计时
- Handler实现验证码获取倒计时功能
- 实现短信验证码获取倒计时
- js获取验证码倒计时如何实现
- 实现获取验证码倒计时功能
- Android 获取验证码倒计时实现
- iOS GCD实现发送验证码倒计时
- iOS - 实现验证码倒计时功能
- 获取验证码倒计时
- 获取验证码倒计时
- link to markdown tutorial
- 【中山市选2008】矩阵
- io加强
- PhoneGap android开发:PhoneGap基本介绍
- 在(1)的基础上,实现分数类中的对象和整型数的四则运算。分数类中的对象可以和整型数进行四则运算,且运算符合交换律。例如:CFraction a(1,3),b; int i=2; 可以完成b=a+i;。
- iOS常用技术 —获取验证码 倒计时 实现
- svn UserInterfaceState.xcuserstate问题
- Android隐藏状态栏
- hdu1863 畅通工程
- Android-----官方MVP架构----示例项目解析
- 【娱乐向】Java古风玛丽苏诗句生成器
- 解决win10桌面不能自动刷新问题
- JAVA读取xls文件和xlsx文件
- [bzoj3720][非树分块算法]Gty的妹子树