在 viewWillDisappear 上停止 AVAudioPlayer

Posted

技术标签:

【中文标题】在 viewWillDisappear 上停止 AVAudioPlayer【英文标题】:stop the AVAudioPlayer on viewWillDisappear 【发布时间】:2014-08-05 12:18:00 【问题描述】:

我正在开发一个使用 AVAudioPlayer 的 Xcode 应用程序。

@property (nonatomic, strong) AVAudioPlayer *player;

点击图像时,我调用了一个播放音频文件的函数:

-(void)playMusic
        if(self.player.currentTime == 0.0)
            self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/sound.mp3", [[NSBundle mainBundle] resourcePath]]] error:nil];
            self.player.numberOfLoops = 0;
            [self.player play];
        

在 viewWillDisappear 上我需要停止播放器,所以我打电话:

-(void)viewWillDisappear:(BOOL)animated
    [self.player stop];
 

但是上面的代码不起作用,并且音频没有停止播放。

谁能告诉我可能是什么问题?

【问题讨论】:

你有没有试过调用[self.player pause]; 另外你应该使用 _player 而不是 self.player 我试过 [self.player pause];但它不起作用。我也试过 [_player pause]; 你检查过 viewWillDisappear 是否被调用 是的,它被调用了,我尝试使用 NSLog 【参考方案1】:

你为什么不停止播放具有相同图像点击的歌曲,

   if([player isPlaying] )
    
        [player pause];
    
    else
    [player play];

【讨论】:

但我不希望播放器在点击图像时停止。我希望它在视图更改时停止。

以上是关于在 viewWillDisappear 上停止 AVAudioPlayer的主要内容,如果未能解决你的问题,请参考以下文章

为啥 UIActivityViewController 会在 Presenter 上调用 viewWillDisappear()?

知道 -viewWillAppear 何时触发但 -viewWillDisappear 尚未触发

通过在父级上呈现新的视图控制器 viewWillDisappear 在我取消订阅事件时触发

AVAudioPlayer 停止问题

viewDidLoad, viewWillDisappear, viewWillAppear等区别及各自的加载顺序

iOS - viewDidLoad, viewWillDisappear, viewWillAppear区别及加载顺序