2012-01-01 3 views
-1

UIToolbar имеет UIBarButtonItems кнопки воспроизведения, паузы и остановки. Кнопки воспроизведения и остановки работают нормально, но кнопка паузы останавливает аудиоплеер, а не приостанавливает аудиоплеер. Он должен приостановить аудиофайл и возобновить аудиофайл.Кнопка паузы останавливает AVAudioPlayer, а не приостанавливает

Глядя на мой код ниже, вы видите что-нибудь не хватает?

- (void) playaudio: (id) sender 
{ 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Theme" 
                ofType:@"mp3"]; 
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath]; 

    self.audioPlayer = [[AVAudioPlayer alloc] 
        initWithContentsOfURL:fileURL error:nil]; 

    self.audioPlayer.currentTime = 0; 
    [self.audioPlayer play]; 
} 

- (void)pause: (id)sender 
{ 
    [audioPlayer pause]; 
} 

- (void) stop: (id) sender 
{ 
    [audioPlayer stop]; 
} 
+0

Пожалуйста, дайте более подробное объяснение того, что вы пытаетесь для того чтобы достигнуть, с большим количеством кода;) – craig1231

+0

Может быть, попробуйте использовать свойство вместо Ивар непосредственно? '[self.audioPlayer pause]' –

+0

попробовали это слишком раньше. Но это не сработало. – user1120133

ответ

3

Предполагая, что вы связали Возобновить действие на playAudio, этот кусок кода есть:

self.audioPlayer.currentTime = 0; 

Какой будет перезагружен аудиофайл с самого начала, а не от того, где он находится в режиме паузы.

Если это не проблема, вы должны обязательно разместить больше кода.

2

Если я слежу за тем, что вы пытаетесь решить свою проблему, так это то, что вы неявно запускаете таймеры, чтобы отключить методы отображения вида и ожидать их остановки без каких-либо сообщений или логики. Если это так, вы не пытаетесь спать в приложении, просто прекратите использовать эти методы.

Простым решением с существующим кодом было бы установить BOOL appIsPaused и в вашем методе playpauseAction установить bool соответствующим образом в зависимости от состояния кнопки.

Затем в вашем displayviewsAction заверните свой код в оператор if (т.е. if (! AppIsPaused) {.}). Если приложение приостанавливается до того, как будут запущены методы обновления вида, BOOL будет установлен на YES, и представление не будет обновляться.

+0

Не могли бы вы показать мне, как это сделать при кодировании – user1120133

+0

Спасибо, что дали мне правильный совет – user1120133

+0

Предполагая, что вы указали BOOL appIsPaused в вашем методе playpauseAction: после строки '[пауза аудиоплеера]' add 'appIsPaused = YES;' и после '[audioPlayer play]' add 'appIsPaused = NO;'. Затем запустите метод displayviewsAction с 'if (! AppIsPaused) {FirstViewController * viewController = [[FirstViewController alloc] init]; ... ' – VsSoft

0

Попробуйте это:

- (void) stop: (id) sender 
{ 
    if (audioPlayer.playing) 
    { 
     [player stop]; 
     audioPlayer.currentTime = 0; 
    } 
} 
Смежные вопросы