【代码笔记】iOS-手机验证码
来源:互联网 发布:开票软件是什么 编辑:程序博客网 时间:2024/05/12 23:32
一,效果图。
二,代码。
RootViewController.h
#import <UIKit/UIKit.h>@interface RootViewController : UIViewController@end
RootViewController.m
#import "RootViewController.h"@interface RootViewController ()@end@implementation RootViewController{ NSTimer* sysTimer; BOOL timeStart;}- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self;}- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view. //BOOL值默认为NO。 NSLog(@"---timeStart--%d-----",timeStart); //发送验证码到手机上-Button UIButton *sendYZM=[UIButton buttonWithType:UIButtonTypeCustom]; [sendYZM setFrame:CGRectMake(50, 100, 250, 50)]; [sendYZM setBackgroundColor:[UIColor redColor]]; [sendYZM setTitle:@"发送注册验证码到手机上" forState:UIControlStateNormal]; [sendYZM setTitleColor:[UIColor colorWithRed:66/255.0 green:66/255.0 blue:221/255.0 alpha:1.0] forState:UIControlStateNormal]; [sendYZM addTarget:self action:@selector(doClickButton:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:sendYZM];}-(void)doClickButton:(UIButton *)btn{ timeStart=YES; sysTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; // 可以通过fire这个方法去触发timer,即使timer的firing time没有到达 [sysTimer fire]; [self getAuthCode];}//随时更新验证码发送的时间- (void)timerFireMethod:(NSTimer *)timer{ //定义一个NSCalendar对象 NSCalendar *cal = [NSCalendar currentCalendar]; //初始化目标时间... NSDateComponents *endTime = [[NSDateComponents alloc] init]; //得到当前时间 NSDate *today = [NSDate date]; NSDate *date = [NSDate dateWithTimeInterval:60 sinceDate:today]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSString *dateString = [dateFormatter stringFromDate:date]; static int year; static int month; static int day; static int hour; static int minute; static int second; if(timeStart) { //从NSDate中取出年月日,时分秒,但是只能取一次 year = [[dateString substringWithRange:NSMakeRange(0, 4)] intValue]; month = [[dateString substringWithRange:NSMakeRange(5, 2)] intValue]; day = [[dateString substringWithRange:NSMakeRange(8, 2)] intValue]; hour = [[dateString substringWithRange:NSMakeRange(11, 2)] intValue]; minute = [[dateString substringWithRange:NSMakeRange(14, 2)] intValue]; second = [[dateString substringWithRange:NSMakeRange(17, 2)] intValue]; timeStart = NO; } [endTime setYear:year]; [endTime setMonth:month]; [endTime setDay:day]; [endTime setHour:hour]; [endTime setMinute:minute]; [endTime setSecond:second]; //把目标时间装载入date NSDate *todate = [cal dateFromComponents:endTime]; //用来得到具体的时差,是为了统一成北京时间 unsigned int unitFlags = NSYearCalendarUnit| NSMonthCalendarUnit| NSDayCalendarUnit| NSHourCalendarUnit| NSMinuteCalendarUnit| NSSecondCalendarUnit; NSDateComponents *d = [cal components:unitFlags fromDate:today toDate:todate options:0]; NSLog(@"----%ld---",[d second]); if([d second] < 60 && [d second] > 0) { NSString *miao = [NSString stringWithFormat:@"%ld",[d second]]; NSLog(@"---miao----%@",miao); UIButton *sendYZM=[UIButton buttonWithType:UIButtonTypeCustom]; [sendYZM setFrame:CGRectMake(50, 100, 250, 50)]; [sendYZM setBackgroundColor:[UIColor redColor]]; [sendYZM setTitle:[NSString stringWithFormat:@"重新发送验证码(%@秒)",miao] forState:UIControlStateNormal]; [sendYZM setTitleColor:[UIColor colorWithRed:66/255.0 green:66/255.0 blue:221/255.0 alpha:1.0] forState:UIControlStateNormal]; [self.view addSubview:sendYZM]; }else if([d second] == 0) { [sysTimer invalidate]; UIButton *sendYZM=[UIButton buttonWithType:UIButtonTypeCustom]; [sendYZM setFrame:CGRectMake(50, 100, 250, 50)]; [sendYZM setBackgroundColor:[UIColor redColor]]; [sendYZM setTitle:@"重新发送验证码" forState:UIControlStateNormal]; [sendYZM setTitleColor:[UIColor colorWithRed:66/255.0 green:66/255.0 blue:221/255.0 alpha:1.0] forState:UIControlStateNormal]; [sendYZM addTarget:self action:@selector(doClickButton:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:sendYZM]; }}- (void)getAuthCode{ //将电话号码发送到服务器,服务器返回验证码。当验证码和注册用户输入一样的时候,则可以进行下一步操作。}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end
0 0
- 【代码笔记】iOS-手机验证码
- 【代码笔记】iOS-手机号验证
- 手机验证码代码测试
- iOS 获取手机验证码
- [IOS]SMS获取&验证手机验证码
- 【代码笔记】iOS-检测手机翻转
- 【代码笔记】iOS-手机系统版本
- 手机发送验证码—.net代码
- 发送手机验证码的js代码、手机号合法验证
- 【代码笔记】iOS-验证手机号,邮箱,车牌号是否合法
- 手机注册获取验证码的PHP代码
- JQ实现点击后手机验证码倒计时代码
- 手机发送短信验证码的部分代码
- 手机注册获取验证码的PHP代码
- 手机发送短信验证码的部分代码
- iOS 开发手机端生成随机验证码视图
- 【Servlet笔记】servlet 代码生成验证码
- Validform验证手机验证码
- Android中的Layout_weight(权重)详解
- Java网络编程精解之ServerSocket用法详解二
- CDOJ1357--柱爷与最大区间和
- Python中的sorted函数以及operator.itemgetter函数
- boost同步互斥mutex lock
- 【代码笔记】iOS-手机验证码
- activity切换时的overridePendingTransition动画效
- mysql数据目录迁移
- Bootstrap框架
- 【Android 基础】Animation 动画介绍和实现
- Save & Apply mechanism of luci
- 《深入理解Java虚拟机》读后总结 (四)JVM垃圾回收
- 常见的C语言内存错误及对策
- 每天laravel-20160816| Container -19