我用這一招,它適用於我的情況,但它可能給你一個線索:
步驟一:
上添加觀察家你想從那裏播放器視圖控制器出示您的視圖控制器得到通知時,其幀之間的變化:
self.playerViewController.addObserver(self, forKeyPath: #keyPath(MyViewController.view.frame), options: .new, context: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidFinishPlaying),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.playerViewController.player!.currentItem)
第二步:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if (keyPath == #keyPath(MyViewController.view.frame)){
if playerViewController.player?.rate == 0{
doneClicked()
}
}
}
第三步:
func doneClicked(){
self.playerViewController.player!.pause()
self.playerViewController.player!.rate = 0.0
self.playerViewController.player = nil
self.playerViewController.removeObserver(self, forKeyPath: #keyPath(HomeTabViewController.view.frame))
NotificationCenter.default.removeObserver(self)
self.playerViewController.dismiss(animated: false, completion: nil)
}
感謝的回答,您可以更新到你的答案代碼?因爲我嘗試使用PlayerItemDIdReachEnd,但沒有選項或名稱上SWIFT 2.2 –
對不起,你可以嘗試AVPlayerItemDidPlayToEndTimeNotification – Rajat
時的完成按鈕被竊聽這個選項無法控制。它只是控制視頻播放完整的視頻長度。 :( –