Остановить AVAudioplayer от одной кнопки - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь отключить звук будильника, когда пользователь нажимает кнопку «Готово». Это код, который я использую сейчас. Я не смог найти никакого решения, когда речь идет об использовании той же кнопки.

@objc func runTimer() {

        if isTimerRunning {
            cafe.time -= 1

            if cafe.time <= 0 {
                timer.invalidate()
                let url = Bundle.main.url(forResource: "alarm_sound", withExtension: "mp3")
                alarmSound = try! AVAudioPlayer(contentsOf: url!)
                alarmSound.play()

                if alarmSound.isPlaying {
                    startButton.setTitle("Done", for: .normal)


                }
            }

@IBAction func startButtonPressed(_ sender: Any) {

        if !isTimerRunning {
            navigationItem.hidesBackButton = true
            isTimerRunning = true
            timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(runTimer), userInfo: nil, repeats: true)
            print("time")
            startButton.setTitle("Stop Brewing", for: .normal)
        } else {
            navigationItem.hidesBackButton = false
            isTimerRunning = false
            resetTimer()
            startButton.setTitle("Start Brewing", for: .normal)
        }
        if startButton.currentTitle == "Done"{
          alarmSound.stop()
        }else{
          alarmSound.play()
        }

    }

Заранее спасибо!

1 Ответ

1 голос
/ 29 января 2020

взять переменную, чтобы проверить, воспроизводится или нет звук

var playing = false

установить playing = true когда вы измените текст кнопки (готово)

и применить приведенный ниже код в событии клика

@IBAction func startButtonPressed(_ sender: Any) {

if playing == true {
   alarmSound.stop()
}else{

alarmSound.play()

 }
}
...