Sie haben einen Delegierten zu setzen:
scalePlayer.delegate = self
Dann implementieren Sie diesen Rückruf
func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) {
//set the current time here
scalePlayer.currentTime = 0
}
aktualisieren
Hier ist ein Beispiel, wie man dies umsetzen kann (basierend auf Ihrem Code):
class MyViewController: UIViewController, AVAudioPlayerDelegate {
@IBOutlet weak var play: UIButton!
private var scalePlayer: AVAudioPlayer?
override func viewDidLoad() {
super.viewDidLoad()
let path = NSBundle.mainBundle().pathForResource("cmajor", ofType: "wav")!
let url = NSURL(fileURLWithPath: path)
scalePlayer = try? AVAudioPlayer(contentsOfURL: url)
scalePlayer?.delegate = self
}
@IBAction func onPlayButtonClick(sender: UIButton) {
play.enabled = false
scalePlayer?.prepareToPlay()
scalePlayer?.enableRate = true
scalePlayer?.rate = 0.75
scalePlayer?.play()
}
func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) {
scalePlayer?.currentTime = 0
}
}
Könnten Sie bitte ins Detail gehen? Ich bin neu, und ich weiß nicht, wo ich diese Codezeilen einfügen soll und wie die Delegierten genau arbeiten. –
aktualisiert meine Antwort – fiks
Es kompiliert und dann sofort mit diesem Fehler abstürzt: schwerwiegender Fehler unerwartet gefunden Null beim Entpacken ein optionaler Wert –