func listenVolumeButton(){
do {
try audioSession.setActive(true, options: [])
audioSession.addObserver(self as! NSObject, forKeyPath: "outputVolume",
options: NSKeyValueObservingOptions.new, context: nil)
audioLevel = audioSession.outputVolume
print("Value is \(audioLevel)")
} catch {
print("Error")
}
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "outputVolume" {
let audioSession = AVAudioSession.sharedInstance()
if audioSession.outputVolume > audioLevel {
print("Hello up key pressed")
if audioSession.outputVolume < audioLevel {
print("Hello down key pressed")
audioLevel = audioSession.outputVolume
print(audioSession.outputVolume)
}
}
}
}
当我们尝试删除观察者应用程序崩溃
audioSession.removeObserver(self, forKeyPath: "outputVolume")
它通过给出以下原因而崩溃
'无法从 <AVAudioSession 0x2817259d0> 中删除观察者或关键路径“outputVolume”,因为它没有注册为观察者。'