Подтвердить что ты не робот

Создание таймера iOS

Я пытаюсь создать функциональность типа "секундомер". У меня есть одна метка (для отображения прошедшего времени) и две кнопки (запуск и останов таймера). Кнопки пуска и останова вызывают функции startTimer и stopTimer соответственно. Каждую секунду таймер срабатывает и вызывает функцию increaseTimerCount. У меня также есть ivar timerCount, который удерживается в течение прошедшего времени в секундах.

- (void)increaseTimerCount
{
    timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount++];
}

- (IBAction)startTimer
{
    timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(increaseTimerCount) userInfo:nil repeats:YES];

}

- (IBAction)stopTimer
{
    [timer invalidate];
    [timer release];
}

Проблема заключается в том, что, когда нажата кнопка запуска, кажется, что существует задержка (которая, как я предполагаю, связана с повторной инициализацией таймера при каждом вызове startTimer). Есть ли способ просто приостановить и возобновить таймер, не отменяя его и воссоздавая? или лучший/альтернативный способ сделать это?

Спасибо.

4b9b3361

Ответ 1

Вы не можете приостановить таймер без использования invalidate. Что вы можете сделать, это добавить

[timer fire];

после создания таймера в startTimer.

Ответ 2

Немного устарел, но если кому-то все еще интересно...

не останавливать таймер, но останавливать приращение во время паузы, например

- (void)increaseTimerCount
{
   if (!self.paused){
      timerCount++
   }

   timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount];
}