Cómo pausar / jugar NSTimer?

Necesito iniciar NSTimer por 0: 0: 0 que estoy haciendo y tengo un botón de pausa al hacer clic en que el temporizador tiene que pausar después de un tiempo si un usuario hace clic en jugar tiene que ejecutarse desde el valor de tiempo en pausa. ¿Cómo puedo pausar y jugar en NSTimer? ¿Alguna ayuda? Gracias por adelantado.

Prueba este chisporroteo … funcionó muy bien para mí

EDITAR

Para ser sincero, mi código real es este:

-(IBAction)clicked:(id)sender { if ([startStop.titleLabel.text isEqualToString:@"Start"]) { [startStop setTitle:@"Pause" forState:UIControlStateNormal]; [startStop setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countUp) userInfo:nil repeats:YES]; timerDown = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDown) userInfo:nil repeats:YES]; } else if ([startStop.titleLabel.text isEqualToString:@"Pause"]) { [startStop setTitle:@"Resume" forState:UIControlStateNormal]; [startStop setTitleColor:[UIColor colorWithRed:0/255 green:0/255 blue:255/255 alpha:1.0] forState:UIControlStateNormal]; pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain]; previousFireDate = [[timer fireDate] retain]; [timer setFireDate:[NSDate distantFuture]]; } else if ([startStop.titleLabel.text isEqualToString:@"Resume"]) { [startStop setTitle:@"Pause" forState:UIControlStateNormal]; [startStop setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; float pauseTime = -1*[pauseStart timeIntervalSinceNow]; [timer setFireDate:[NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate]]; [pauseStart release]; [previousFireDate release]; } } 

Usé un UIButton y usé este código cuando hice clic.

recuerda poner esto:

 NSDate *pauseStart, *previousFireDate; 

en tu archivo .h

¡EDITAR!

aquí está el método countUp. olvida el método down segundos, minutos, horas son Ints

 - (void)countUp { seconds += 1; if (seconds == 60) { seconds = 0; minutes++; if (minutes == 60) { minutes = 0; hours++; } } } 

Tu no En lugar de pausar, simplemente invalide y suelte el viejo temporizador y cuando los usuarios presionen Reproducir nuevamente, cree un nuevo temporizador.

refreshTimer debe estar en el nivel de clase. Use el siguiente código para detener el temporizador:

 refreshTimer = [NSTimer scheduledTimerWithTimeInterval: refreshInSeconds target: self selector: @selector(refreshPage) userInfo: nil repeats: YES]; [refreshTimer invalidate]; refreshTimer = nil; 

Para comenzar, puede volver a progtwigr el temporizador como Línea 3

Use el siguiente código para iniciar el temporizador con argumentos también:

 timer = [NSTimer scheduledTimerWithTimeInterval:time target:self selector:@selector(callMyMethod:) userInfo:[NSDictionary dictionaryWithObjectsAndKeys:web1, @"web", baseURL, @"baseURL", option1, @"option", nil] repeats:NO]; 

y luego usa

 [timer invalidate]; 

para detener el cronómetro

Espero que este código te ayude.

Gracias.

no hay pausa para NSTimer, debe detenerse y volver a iniciarla.

[yourTimer invalida]; // detendrá el temporizador luego de lo cual podrás volver a iniciarlo

Respuesta actualizada para Swift 2

 import UIKit class ViewController: UIViewController { var myTimer = NSTimer() var time = 0 // global var @IBOutlet weak var counterLabel: UILabel! @IBAction func pauseTimer(sender: AnyObject) { myTimer.invalidate() } @IBAction func startTimer(sender: AnyObject) { myTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true) } func result() { time++ counterLabel.text = String(time) print(time) } override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }