MP3 文件无法在按钮上播放 Select

MP3 File Not Playing On Button Select

为简单起见,假设此视图在您单击所述按钮时显示按钮中的字母。

我一直在尝试播放与每个按钮关联的音频文件,但这些文件从未播放过。这些按钮,单独地,从来没有给出插座,但它们都连接到 Touch Up Inside 上的功能。

class UIAlphabetController: UIViewController, AVAudioPlayerDelegate{
   @IBAction func PlaySound(Sender: UIButton) {
      let soundname:String = Sender.currentTitle!
      var player: AVAudioPlayer?

      let url = Bundle.main.url(forResource: soundname, withExtension: "mp3")

      do {
         player = try AVAudioPlayer(contentsOf: url!)
         guard let player = player else { return }

         player.prepareToPlay()
         player.play()
      } catch let error { print(error.localizedDescription) }
   }
}

自从我遇到这个问题以来,AQDefaultDevice (188): skipping input stream 0 0 0x0 消息一直出现。在使用断点进行测试时,soundnameurl 都具有预期值。

有人知道如何解决这个问题吗?

将您的 AVAudioPlayer 实例移到该方法之外。如果你这样做,它会让播放器保持足够长的时间来播放声音。它不起作用的原因是它在该方法完成后丢弃播放器实例,因为它认为您已完成使用它。

class UIAlphabetController: UIViewController, AVAudioPlayerDelegate {
      var player: AVAudioPlayer?
      @IBAction func PlaySound(Sender: UIButton) {
          let soundname:String = Sender.currentTitle!


          let url = Bundle.main.url(forResource: soundname, withExtension: "mp3")

          do {
             player = try AVAudioPlayer(contentsOf: url!)
             guard let player = player else { return }

             player.prepareToPlay()
             player.play()
          } catch let error { print(error.localizedDescription) }
     }
}