Commandes de lecture AVPlayerViewController manquantes dans iOS14

Sep 23 2020

J'ai un AVPlayerViewController que j'intègre dans un fichier UIStackView. Le code fonctionne bien sur iOS13 mais sur iOS14 je n'ai pas de commandes de lecture. Les commandes de lecture n'apparaissent pas lorsque je touche la vue, mais la vidéo démarre lorsque je fais un geste de pincement. Lorsque la vidéo est lue, j'obtiens soudainement les commandes de lecture et je peux interagir avec elles. Mon TapableAVPlayerViewControllern'est pas le problème car je l'ai essayé avec une norme AVPlayerViewControlleret j'obtiens le même comportement. Parfois, je vois même un gros bouton de lecture (comme dans iOS13) qui disparaît lorsque la vue est complètement chargée.

Comment récupérer mes commandes de lecture? Toute aide appréciée! Merci!

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
}

Réponses

NicoS. Sep 23 2020 at 00:53

J'ai trouvé une solution. Cela ressemble aux UIContextMenuInteractioninterruptions des commandes de lecture. Lorsque j'ai défini la configuration d'interaction après tout le AVPlayerViewControllercode de configuration, j'ai récupéré mes commandes de lecture.