2017-10-28 2 views
1

Ich sehe dieses unerwartete Verhalten mit der Funktion pause() von AVAudioPlayer. Wenn ich auf die Schaltfläche "Pause" klicke, sollte das Audio tatsächlich zur aktuellen Zeit pausieren und von dort wieder aufgenommen werden, wenn play() aufgerufen wird. Aber hier, wenn ich pause() drücke, wird das Audio angehalten und wenn ich auf play() klicke, wird das Audio von Anfang an abgespielt. pause() verhält sich wie stop().AVAudioPlayer Pause() verhält sich nicht wie erwartet

var player: AVAudioPlayer = AVAudioPlayer() 

@IBAction func PlayPauseAudioButton(_ sender: UIButton) { 
    if sender.currentImage == #imageLiteral(resourceName: "play-btn") { 
     sender.setImage(#imageLiteral(resourceName: "pause-btn"), for: .normal) 

     do { 
      let audioPath = Bundle.main.path(forResource: "aug-ps-raj", ofType: "mp3") 
      try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL) 
     } catch { 
      // Catch the error 
     } 
     player.play() 

    } else { 
     sender.setImage(#imageLiteral(resourceName: "play-btn"), for: .normal) 
     player.pause() 

    } 
} 

Antwort

2

Das Problem besteht darin, dass Sie jedes Mal eine neue Player-Instanz erstellen, wenn auf die Schaltfläche Abspielen geklickt wird. Stattdessen können Sie diese AVAudioPlayer Instanz im Voraus erstellen und nur play() und pause() in Ihrem Button-Click-Handler aufrufen.

Verwandte Themen