Состояние AVPlayer: сообщение было получено, но не обработано
Я довольно новичок в наблюдателях и Swift/ObjC, и я пытаюсь контролировать состояние AVPlayer, используя его, как сказано в документации Apple, но все, что я получаю, это сообщение об ошибке "сообщение получено, но не обработано" при попытке добавить Наблюдатель.
gs_mediaObjAdv=AVPlayer(URL: NSURL(string: mediaURL));
gs_mediaObjAdv.addObserver(self, forKeyPath: "status", options:NSKeyValueObservingOptions.New, context:nil);
Если я отменяю регистрацию наблюдателя, ошибка исчезает, но если я добавлю println("test") внутри функции наблюдайВалюФорФКейПат, ничего не произойдет.
Любая идея о том, как я могу контролировать статус простым способом?
0 ответов
Пожалуйста, проверьте метод Observer, который у вас есть. Это должен быть метод экземпляра, а не метод класса.
Вот ответ для тех, кому он нужен Swift 5.1
//playerViewController is defined as a class member
//let playerViewController = AVPlayerViewController()
self.playerViewController.player!.addObserver(self, forKeyPath: "rate", options: .new, context: nil)
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "rate" {
if let rate = change?[NSKeyValueChangeKey.newKey] as? Float {
if rate == 0.0 {
print("playback stopped")
//view.addSubview(drawView)
}
if rate == 1.0 {
print("normal playback")
}
if rate == -1.0 {
print("reverse playback")
}
}
}
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
}