暂停按钮停止AVAudioPlayer而不是暂停

时间:2012-01-01 20:05:16

标签: iphone ios uibarbuttonitem uitoolbar

UIToolbarUIBarButtonItems个播放,暂停和停止按钮。播放和停止按钮工作正常,但暂停按钮停止音频播放器而不是暂停音频播放器。它应该暂停音频文件并恢复音频文件。

查看下面的代码,你看到有什么遗漏吗?

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

3 个答案:

答案 0 :(得分:3)

假设您将取消暂停操作链接到playAudio,这段代码就在那里:

self.audioPlayer.currentTime = 0;

这将从头开始重新启动音频文件,而不是从暂停的位置重新开始。

如果这不是问题,那么你一定要发布更多代码。

答案 1 :(得分:2)

如果我正在关注您尝试做什么,那么您的问题就是您隐式启动计时器来触发视图显示方法并期望它们在没有任何消息或逻辑的情况下停止。如果是这样,你就不会试图让应用程序休眠,只需停止这些方法即可。

使用现有代码的简单解决方案是设置BOOL appIsPaused并在playpauseAction方法中根据按钮的状态适当地设置bool。

然后在你的displayviewsAction中将你的代码包装在if语句中(即if if(!appIsPaused){。})。如果在触发视图更新方法之前应用程序暂停,则BOOL将设置为YES并且视图将不会更新。

答案 2 :(得分:0)

试试这个:

- (void) stop: (id) sender
{
   if (audioPlayer.playing)
    {
        [player stop];
        audioPlayer.currentTime = 0;
    }
}