倒计时每次点击都会更快

时间:2012-04-03 15:00:34

标签: iphone objective-c cocoa-touch nstimer

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

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;
    }
}

2 个答案:

答案 0 :(得分: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];

}

答案 1 :(得分:1)

我认为这可能是bcoz你永远不会停止你的计时器,所以当你点击它第二次它和2个计时器运行等等....尝试在你点击并再次启动之前停止你的计时器..