Wenn Sie die Pausentaste erneut drücken, wird der Ladevorgang der View-Controller fortgesetzt

ich benutzeAVAudioplayer zuAudio-Dateien abspielen, Play / Pause-Taste zum Umschalten zwischen Wiedergabe und Pause undNSTimer mitaudio player zu synchronisierenview controllers einer nach demanderen. Ich habe insgesamt 10 oder 11view controllers nacheinander laden.

Wenn die Wiedergabetaste beim ersten Start gedrückt wirdNSTimer, fängt an zu spielenaudio file und basiert aufNSTimer, View-Controller werden nacheinander geladen. Wenn die Pause-Taste erneut gedrückt wird, um fortzufahren, wird alles von dieser Punkt-Audiodatei fortgesetzt.NSTimer undview controllers von dem Punkt an, an dem es angehalten wurde, was gut ist. Gleichzeitig beginnt das Laden derview controllers wieder nacheinander von anfang an nachNSTimer was nicht gut ist.

View Controller werden mit dieser Anweisung neu geladen

self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                              target:self
                                            selector:@selector(displayviewsAction:)
                                            userInfo:nil
                                             repeats:NO];

Mein Problem ist also, dass ich das Laden von stoppen mussview controllers erneut von Anfang an, wenn die Pause-Taste erneut gedrückt wird, um die Wiedergabe fortzusetzen.

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

Kann mir jemand eine Idee geben, wie man das Laden von stopptview controllers erneut von Anfang an, wenn die Pause-Taste erneut gedrückt wird, um die Wiedergabe fortzusetzen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage