<pre name="code" class="html">
1.CGD定時器
<pre name="code" class="objc">- (IBAction)countDown:(id)sender {
__block int currentSeconds = 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 (currentSeconds <= 0) {
dispatch_source_cancel(timer);
dispatch_async(dispatch_get_main_queue(), ^{
self.timeButton.enabled = YES;
[self.timeButton setTitle:@"驗證" forState:UIControlStateNormal];
});
} else {
currentSeconds--;
dispatch_async(dispatch_get_main_queue(), ^{
self.timeButton.enabled = NO;
[self.timeButton setTitle:[NSString stringWithFormat:@"%d秒",currentSeconds] forState:UIControlStateNormal];
});
}
});
//啓動定時器
dispatch_resume(timer);
}
2.NSTimer定時器
<pre name="code" class="objc">-(void)lookBackClick:(UIButton *)btn
{
NSDictionary *params = @{@"phone":fieldMobile.text};
[NetworkHandle post:CAPTCHA_URL parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary *response) {
NSLog(@"------%@",operation.responseString);
NSDictionary *rs = [NSJSONSerialization JSONObjectWithData:operation.responseData options:NSJSONReadingMutableContainers error:nil];
if (rs) {
codeString = rs[@"ds"];
seconds = 60;
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];
[getButton setEnabled:NO];
}
}];
}
- (void)onTimer:(id)userInfo {
[getButton setTitle:[NSString stringWithFormat:@"%d", --seconds] forState:UIControlStateDisabled];
if (seconds == 0) {
[getButton setTitle:@"獲取驗證碼" forState:UIControlStateNormal];
[getButton setEnabled:YES];
NSTimer *timer = (NSTimer *)userInfo;
[timer invalidate];
}
}