botón de pausa cuando se presiona de nuevo para reanudar la recarga de los controladores de vista
estoy usandoAVAudioplayer
areproducir archivos de audio, Botón de reproducción / pausa para alternar entre reproducción y pausa yNSTimer
conaudio player
sincronizarview controllers
Uno después del otro. Tengo un total de 10 u 11view controllers
para cargar uno tras otro.
Cuando se presiona el botón de reproducción la primera vez que comienzaNSTimer
, comienza a jugar unaudio file
y basado enNSTimer
, los controladores de vista cargarán uno tras otro. Cuando se presiona nuevamente el botón de pausa para reanudarlo, se reanuda todo desde ese punto en el archivo de audio,NSTimer
yview controllers
desde el mismo punto donde se pausó lo que es bueno. Sin embargo, al mismo tiempo comienza a cargar elview controllers
de nuevo uno tras otro desde el principio basado enNSTimer
que no es bueno
Está recargando controladores de vista con esta declaración
self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
target:self
selector:@selector(displayviewsAction:)
userInfo:nil
repeats:NO];
Así que mi problema es que necesito detener la carga deview controllers
de nuevo desde el principio cuando se presiona nuevamente el botón de pausa para reanudar la reproducción.
-(void)playpauseAction:(id)sender
{
if ([audioPlayer isPlaying]) {
[sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];
[audioPlayer pause];
[self pauseTimer];
} else {
[sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
[audioPlayer play];
[self resumeTimer];
self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
target:self
selector:@selector(displayviewsAction:)
userInfo:nil
repeats:NO];
}
}
-(void)pauseTimer{
pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain];
previousFireDate = [[timer fireDate] retain];
[timer setFireDate:[NSDate distantFuture]];
}
-(void)resumeTimer{
float pauseTime = -1*[pauseStart timeIntervalSinceNow];
[timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]];
[pauseStart release];
[previousFireDate release];
}
- (void)displayviewsAction:(id)sender
{
First *firstController = [[First alloc] init];
firstController.view.frame = CGRectMake(0, 0, 320, 480);
CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setDuration:1];
[transitionAnimation setType:kCATransitionFade];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFade];
[self.view addSubview:firstController.view];
[self.view addSubview:toolbar];
[firstController release];
self.timer = [NSTimer scheduledTimerWithTimeInterval:23 target:self selector:@selector(Second) userInfo:nil repeats:NO];
}
¿Alguien puede dar una idea sobre cómo detener la carga deview controllers
de nuevo desde el principio cuando se presiona nuevamente el botón de pausa para reanudar la reproducción.