Я адаптирую свое приложение к Swift 3, и я столкнулся с этой проблемой. Это работало на Swift 2.2, но теперь оно сломано. moviePlayBackFinished никогда не вызывается. Я попытался добавить наблюдателя несколькими способами, все без успеха.AVPlayerItemDidPlayToEndTime никогда не достигает селектора в Swift 3
NotificationCenter.default.addObserver(self, selector: #selector(self.moviePlayBackFinished(_:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem);
NotificationCenter.default.addObserver(self, selector: #selector(moviePlayBackFinished(_:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem);
NotificationCenter.default.addObserver(self, selector: #selector(self.moviePlayBackFinished(sender:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem);
// (...)
@objc func moviePlayBackFinished(sender : AnyObject) {
print("playbackFinished");
let zeroCM : CMTime = CMTime(seconds: 0, preferredTimescale: 1000000000);
playerLayer.player?.seek(to: zeroCM);
}
@objc func moviePlayBackFinished(_ notification: Notification) {
print("playbackFinished");
let zeroCM : CMTime = CMTime(seconds: 0, preferredTimescale: 1000000000);
playerLayer.player?.seek(to: zeroCM);
}
Любые идеи будут рассмотрены.
Спасибо
Спасибо за этот намек. У меня такая же проблема. – Gondomir
Это неправильный ответ. Это проблема с потоком. В соответствии с быстрой справочной документацией 'AVPlayerItemDidPlayToEndTime',' Important Это уведомление может быть опубликовано в другом потоке, отличном от того, на котором был зарегистрирован наблюдатель .'. Одним из простых исправлений для этого будет использование блочного NSNotificationCenter наблюдения. – Ryan