iOS 简单实现重新获取验证码并倒计时60秒
来源:互联网 发布:微信客服系统源码 编辑:程序博客网 时间:2024/05/20 07:19
@implementation ViewController
{
UIButton * _receiveCheckNumButton;
}
- (void)viewDidLoad {
[superviewDidLoad];
_receiveCheckNumButton = [[UIButtonalloc] initWithFrame:CGRectMake(([UIScreenmainScreen].bounds.size.width - 100)/2,100, 100, 40 )];
_receiveCheckNumButton.backgroundColor = [UIColorpurpleColor];
[_receiveCheckNumButtonsetTitle:@"获取验证码"forState:UIControlStateNormal];
[_receiveCheckNumButtonsetTitleColor:[UIColorwhiteColor] forState:UIControlStateNormal];
_receiveCheckNumButton.titleLabel.font = [UIFontsystemFontOfSize:13];
_receiveCheckNumButton.layer.cornerRadius =5;
_receiveCheckNumButton.layer.masksToBounds =YES;
_receiveCheckNumButton.alpha =0.3;
[_receiveCheckNumButtonaddTarget:selfaction:@selector(receiveCheckNumButton)forControlEvents:UIControlEventTouchUpInside];
[self.viewaddSubview:_receiveCheckNumButton];
}
//获取验证码倒计时
- (void)receiveCheckNumButton{
__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_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(), ^{
//设置界面的按钮显示根据自己需求设置
[_receiveCheckNumButtonsetTitle:@"重新获取"forState:UIControlStateNormal];
_receiveCheckNumButton.userInteractionEnabled =YES;
_receiveCheckNumButton.backgroundColor = [UIColorpurpleColor];
});
}else{
int seconds = timeout;
NSString *strTime = [NSStringstringWithFormat:@"%.2d", seconds];
dispatch_async(dispatch_get_main_queue(), ^{
//让按钮变为不可点击的灰色
_receiveCheckNumButton.backgroundColor = [UIColorgrayColor];
_receiveCheckNumButton.userInteractionEnabled =NO;
//设置界面的按钮显示根据自己需求设置
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[_receiveCheckNumButtonsetTitle:[NSStringstringWithFormat:@"%@秒后重新发送",strTime]forState:UIControlStateNormal];
[UIView commitAnimations];
});
timeout--;
}
});
dispatch_resume(_timer);
}
- iOS 简单实现重新获取验证码并倒计时60秒
- Jquery插件 防刷新倒计时 “点击获取验证码后60秒内禁止重新获取
- Jquery插件 防刷新倒计时 “点击获取验证码后60秒内禁止重新获取
- 获取验证码 60秒倒计时 setInterval
- 重新发送短信验证码的web的60秒倒计时的实现
- jquery实现验证码倒计时60秒
- 对安卓获取验证码倒计时60秒Button按钮的简单封装
- Jquery获取手机验证码后60秒内禁止重新获取 简单例子
- Jquery插件实现点击获取验证码后60秒内禁止重新获取
- Android 实现点击按钮获取验证码 60秒后重新获取效果
- Android 实现点击按钮获取验证码 60秒后重新获取效果
- Android 实现点击按钮获取验证码 60秒后重新获取效果
- 验证码60秒倒计时
- 验证码倒计时60秒
- 仿手机收验证码,60秒倒计时,倒计时中不可点击,倒计时结束重新可以点击
- js实现发送短信验证码后60秒倒计时
- 实现发送短信验证码后60秒倒计时
- jQuery实现发送短信验证码后60秒倒计时
- 杭电2066 一个人的旅行(最短路)(floyd)
- 二进制文件读取写入(一)
- Unix Systems Programming
- c++
- 数据结构-C:二叉树的遍历
- iOS 简单实现重新获取验证码并倒计时60秒
- #公式与实现# Jacobi迭代 Gauss-Seidel迭代
- oracle ||
- #公式与实现# Jacobi迭代的并行实现
- #并行优化# 混沌迭代算法 (Chaotic)
- #并行优化# 通信回避算法 (CA, Communication Avoiding)
- #并行优化# 容错算法 (Fault Tolerant)
- #公式与实现# Jacobi迭代与五点迭代
- 超大矩阵相乘(亿级别)的MapReduce实现思想详解