首页 > 解决方案 > 音频播放按钮 - 开始、停止

问题描述

我是 swift 新手,在此先感谢您的帮助。我正在设计音频播放按钮。下面是代码。按钮将显示“开始”和“停止”。单击“开始”后,在播放音频时按钮显示“停止”,这是正确的。问题是在完成整个音频文件播放后,以下代码无法自动将按钮显示从“停止”翻转回“开始”。在按两次返回“开始”之前,它卡在“停止”。

@IBAction func didTapButton() {
    if let player = player, player.isPlaying {
        // Stop playback
        button.setTitle("start", for: .normal)
        player.stop()
    }
    else {
        // set up player, and play
        button.setTitle("stop", for: .normal)
        let urlString = Bundle.main.path(forResource: "go", ofType: "mp3")
        do {
            try AVAudioSession.sharedInstance().setMode(.default)
            try AVAudioSession.sharedInstance().setActive(true, options: .notifyOthersOnDeactivation)
            guard let urlString = urlString else {
                return
            }
            player = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: urlString))
            guard let player = player else {
                return
            }
            player.play()
        }
        catch {
            print("something went wrong")
        }
    }
} 

标签: swiftbuttonaudioplayback

解决方案


您需要AVAudioPlayerDelegate为播放器实现和设置委托

player.delegate = self

然后更新按钮标题:

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
    button.setTitle("start", for: .normal)
}

推荐阅读