кнопка паузы при повторном нажатии для возобновления загрузки контроллеров представления
я используюAVAudioplayer
вplay audio files, play/pause button to toggle between play and pause а такжеNSTimer
сaudio player
синхронизироватьview controllers
один за другим. У меня всего 10 или 11view controllers
загружать один за другим.
Когда кнопка воспроизведения нажата в самый первый раз, она запускаетсяNSTimer
начинает игратьaudio file
и на основеNSTimer
, контроллеры представления будут загружаться один за другим. Когда кнопка паузы снова нажата для возобновления, она возобновляет все, начиная с этого файла,NSTimer
а такжеview controllers
с той же точки, где он был приостановлен, что хорошо. Однако в то же время он начинает загружатьview controllers
снова один за другим с самого начала на основеNSTimer
что не хорошо.
Это перезагружает контроллеры представления с этим оператором
self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
target:self
selector:@selector(displayviewsAction:)
userInfo:nil
repeats:NO];
Так что моя проблема в том, что мне нужно остановить загрузкуview controllers
снова с самого начала при повторном нажатии кнопки паузы для возобновления воспроизведения.
-(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];
}
Может кто-нибудь дать представление о том, как остановить загрузкуview controllers
снова с самого начала при повторном нажатии кнопки паузы для возобновления воспроизведения.