使用UITapGestureRecognizer播放/暂停音频

时间:2018-04-05 22:22:16

标签: ios swift

这似乎是一个相当简单的任务,但是已经尝试了一段时间来弄清楚...我已经设置了一个UITapGestureRecognizer来播放捆绑中的音频文件。这很好用,但我希望用户能够再次点击该项目并停止音频。基本上能够通过单击轻击对象来启动和重放音频。

    @IBAction func page1Tapped(_ sender: UITapGestureRecognizer) {

    let url:URL = Bundle.main.url(forResource: "Opening Solo", withExtension: "mp3")!
    do {
        audioPlayer = try AVAudioPlayer(contentsOf: url, fileTypeHint: nil)
    } catch {
        return
    }

    audioPlayer.prepareToPlay()
    audioPlayer.play()

    if audioPlayer.isPlaying {
     audioPlayer.stop()
    } else {
     audioPlayer.play()
     }
}

这是我创建的功能。音频只播放,只需在此时每次点击重新开始。

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:3)

这是因为每次点击都会创建一个新的重新分配旧实例,你可以将播放器声明为实例变量

var audioPlayer:AVAudioPlayer?

并在分配

之前检查它的值
 if audioPlayer == nil
 {
    audioPlayer = try AVAudioPlayer(contentsOf: url, fileTypeHint: nil)
    audioPlayer.play()
 }
 else
 {
      if audioPlayer.isPlaying {
          audioPlayer.stop()
       } else {
          audioPlayer.play()
       }
 }