2017-01-03 2 views
1

簡単にするために、このボタンをクリックすると、このビューにボタンのアルファベット文字が表示されているものとします。MP3ファイルが再生されないボタンの選択

各ボタンに関連付けられたオーディオファイルを再生しようとしましたが、ファイルは再生されません。ボタンは個別にアウトレットにはなりませんが、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の両方に期待値があります。

誰でもこの問題を解決する方法はありますか?

答えて

2

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) } 
    } 
} 
+0

Whelp、それは速かった。私はそれが相関していることを認識していませんでしたが、それは私に多くの面倒を知らせてくれました。ありがとう – MoMN

+0

恐ろしい!お役に立てて嬉しいです。 @MoMN –

関連する問題