代码之家  ›  专栏  ›  技术社区  ›  Terry B

使用UITapGestureRecognizer播放/暂停音频

  •  -1
  • Terry B  · 技术社区  · 7 年前

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

        @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()
         }
    }
    

    这是我创建的函数。此时每次轻触,音频仅在0处播放并重新启动。

    非常感谢您的帮助!!

    1 回复  |  直到 7 年前
        1
  •  3
  •   Shehata Gamal    7 年前

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

    var audioPlayer:AVAudioPlayer?
    

    并在赋值前检查其值

     if audioPlayer == nil
     {
        audioPlayer = try AVAudioPlayer(contentsOf: url, fileTypeHint: nil)
        audioPlayer.play()
     }
     else
     {
          if audioPlayer.isPlaying {
              audioPlayer.stop()
           } else {
              audioPlayer.play()
           }
     }