2011-07-15 9 views
18

Estoy intentando crear una funcionalidad de tipo "cronómetro". Tengo una etiqueta (para mostrar el tiempo transcurrido) y dos botones (iniciar y detener el temporizador). Los botones de inicio y parada llaman a las funciones startTimer y stopTimer, respectivamente. Cada segundo, el temporizador dispara y llama a la función increaseTimerCount. También tengo un ivar timerCount que se aferra al tiempo transcurrido en segundos.Crear un temporizador de iOS

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

El problema es que parece que hay un retraso cuando se pulsa el botón de inicio (que estoy asumiendo que se debe a reinicializar el temporizador cada vez startTimer se llama). ¿Hay alguna forma de detener y reanudar el temporizador sin invalidarlo y volver a crearlo? o una forma mejor/alternativa de hacer esto?

Gracias.

Respuesta

9

No puede pausar el temporizador sin usar invalidate. Lo que puede hacer es añadir

[timer fire]; 

después de crear el temporizador en startTimer.

11

Un poco anticuado, pero si alguien todavía está interesada ...

no "detener" el temporizador, pero dejan de incrementarse durante la pausa, por ejemplo,

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

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