Обратный отсчет идет быстрее при каждом клике - PullRequest
0 голосов
/ 03 апреля 2012

У меня большая проблема, и я не могу ее решить: я делаю этот обратный отсчет с помощью 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 ]

5 голосов
/ 03 апреля 2012

Возможно, вы запускаете таймер несколько раз. Вам нужно отменить первый таймер, когда вы нажимаете кнопку во второй раз.

-(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 голос
/ 03 апреля 2012

Я думаю, что это может быть bcoz, вы никогда не останавливаете свой таймер, поэтому, когда вы нажимаете на него во второй раз, он работает как 2 таймера и т. Д. ... попробуйте остановить свой таймер, прежде чем нажать и запустить его снова ..

...