标签:
一,效果图。
二,代码。
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
标签:
原文地址:http://www.cnblogs.com/yang-guang-girl/p/5533421.html