我对观察员和Swift / ObjC都很陌生,而我正试图使用Apple的文档中所述的方式监控AVPlayer状态,但我得到的只是& #34;当我尝试添加观察者时收到消息但未处理" 错误消息。
gs_mediaObjAdv=AVPlayer(URL: NSURL(string: mediaURL));
gs_mediaObjAdv.addObserver(self, forKeyPath: "status", options:NSKeyValueObservingOptions.New, context:nil);
如果我取消注册观察者,则错误消失,但如果我在 observeValueForKeyPath 函数中添加 println(" test"),则不会发生任何事情。
如何以简单的方式监控状态?
答案 0 :(得分:0)
请检查您具有替代值的Observer方法。 它必须是实例方法,而不是类方法。
答案 1 :(得分:0)
这是其他人需要的答案 雨燕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)
}