2012-04-03 81 views
0

我有一个很大的问题,无法解决它: 我用NSTimer进行倒计时,倒数计时工作正常,单击按钮,倒数开始,当达到零时标签出现。 当我再次按下按钮并且倒计时再次开始时,问题就出现了,但是这次是两倍!而下一次更快,更快...我不知道该怎么办...我需要做一个循环,但只能工作一次... 我一直在寻找,但我没有找到任何关于它...没有知道是否有人有同样的问题。 Thanx。每次点击都会倒数更快

NSTimer *timer; int i; 

-(IBAction)pressButton{ 
    i = 10; 
    timer = [NSTimer scheduledTimerWithTimeInterval:1 
              target:self 
              selector:@selector(timerFires) 
              userInfo:nil 
              repeats:YES]; 
    [timer fire]; 
} 

- (void) timerFires{ 
    if(i > 0){ 
     i--; 
     label.text = [NSString stringWithFormat:@"%i", i]; 
    } 
    else{ 
     label.text = @"Tiempo!!"; 
     timer = nil; 
    } 
} 
+0

下一次请花一些时间在你的代码的格式上。 – 2012-04-03 19:07:58

回答

1

我认为这可能是bcoz你永远不会停止你的定时器,所以当你点击它不如2定时器运行等第二次....尝试停止你的定时器,你点击开始之前它再次..

5

您可能多次启动计时器。当你第二次点击按钮时,你需要取消第一个定时器。

-(IBAction)pressButton{ 
    i = 10; 
    if (timer != nil) { 
    [timer invalidate]; 
    } 
    timer = [NSTimer scheduledTimerWithTimeInterval:1 
            target:self 
            selector:@selector(timerFires) 
            userInfo:nil 
            repeats:YES]; 
    [timer fire]; 

} 
+0

或者,他可以禁用该按钮,或更改其功能,以便它取消(即中止)第一个定时器,而不用开始另一个倒计时。 – jer 2012-04-03 15:06:39

+0

非常感谢你......这就是我所缺少的...另外我添加禁用按钮,所以当时间到达零时,按钮被禁用。非常感谢你!!! – jaimex127 2012-04-03 19:43:19

相关问题