您的位置:首页 > 移动开发 > IOS开发

iOS 定时器

2015-08-31 23:07 330 查看
<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];
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios