Reputation: 3303
I have a AVPlayerViewController that I embed in a UIStackView
. The code works fine on iOS13 but on iOS14 I have no playback controls. The playback controls do not appear when I tap the view but the video starts when I make a pinch gesture. When the video plays I suddenly get the playback controls and I can interact with them. My TapableAVPlayerViewController
is not the issue because I tried it with a standard AVPlayerViewController
and I get the same behaviour. Sometimes I even see a big play button (like it was in iOS13) which disappears when the view fully loaded.
How do I get my playback controls back? Any help appreciated! Thanks!
private func setupVideo(for item: Item) {
let avPlayer = AVPlayer()
let avPlayerViewController = TapableAVPlayerViewController()
avPlayerViewController.delegate = self
avPlayerViewController.view.addInteraction(contextMenuInteraction)
NotificationCenter.default.addObserver(self,
selector: #selector(DetailViewController.playerItemDidReachEnd(_:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: avPlayer.currentItem)
avPlayerViewController.player = avPlayer
avPlayerViewController.view.translatesAutoresizingMaskIntoConstraints = false
avPlayerViewController.view.heightAnchor.constraint(equalToConstant: view.bounds.width * CGFloat(item.height) / CGFloat(item.width)).isActive = true
addChild(avPlayerViewController)
stackView.removeArrangedSubview(imageView)
stackView.insertArrangedSubview(avPlayerViewController.view, at: 0)
avPlayerViewController.didMove(toParent: self)
let url = URL(string: viewModel.link)
let playerItem = AVPlayerItem(url: url!)
avPlayer.replaceCurrentItem(with: playerItem)
self.avPlayer = avPlayer
self.avPlayerViewController = avPlayerViewController
}
Upvotes: 2
Views: 799
Reputation: 3303
I found a solution. It looks like the UIContextMenuInteraction
breaks the the playback controls. When I set the interaction setup after the whole AVPlayerViewController
setup code I got my playback controls back.
Upvotes: 0