tvOS Beta 14 swipe .up gesture no longer working

We've have a tvOS app for over 3 years and implemented our own swipe behavior for swipe up, left and right. In the tvOS 14 Beta the selectors on the swipe gestures are longer called when a swipe up occurs.

I created a simple example for a swipe up gesture to show what we are doing. Our Storyboard has a Container View which is an AvPlayerViewController.

Here is a the code for the ViewController.

Code Block
import UIKit
import AVKit
class ViewController: UIViewController {
   
  private var avPlayerViewController: AVPlayerViewController!
  override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
     
// Use this string for the URL: "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8")
    guard let url = URL(string: <copy string here> else {
      return
    }
    // Create an AVPlayer, passing it the HTTP Live Streaming URL.
    let player = AVPlayer(url: url)
    avPlayerViewController.requiresLinearPlayback = false
    avPlayerViewController.playbackControlsIncludeInfoViews = true
    avPlayerViewController.playbackControlsIncludeTransportBar = true
    avPlayerViewController?.player = player
    player.play()
     
    let swipeUpRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(self.swipedUp(_:)) )
    swipeUpRecognizer.direction = .up
    view.addGestureRecognizer(swipeUpRecognizer)
  }
  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     
    if let playerViewController = segue.destination as? AVPlayerViewController {
      avPlayerViewController = playerViewController
      playerViewController.showsPlaybackControls = true
      playerViewController.videoGravity = AVLayerVideoGravity.resizeAspect
    }
  }
   
  @objc func swipedUp(_ gesture: UIGestureRecognizer) {
// NO LONGER CALLED
    print("SWIPED UP!")
  }
   
}

Replies

We are having the same issue. Seems that PiP introduction changed something into AVPlayerViewController internals. It may have added other recogniser that conflict with ours.
Turned out that this happens because of a AVFocusTensionGestureRecognizer instance.
It's the only one gesture of its kind in AVPlayerViewController view hierarchy, so you can track it down by its type and disable for now as a temporary workaround.
Custom swipe-up gesture recognizers are only recognized in clients linked to older SDKs. When you update your project for tvOS 14, you'll need to migrate to the customOverlayViewController API.

Documentation:
https://developer.apple.com/documentation/avkit/avplayerviewcontroller/3229856-customoverlayviewcontroller

There's also some discussion of this in the AVKit sessions in 2019 and 2020:

WWDC 2019: Delivering Intuitive Media Playback with AVKit
https://developer.apple.com/videos/play/wwdc2019/503

Sample Code: https://developer.apple.com/documentation/avkit/adopting_custom_interactive_overlays_channel_flipping_and_parental_controls_in_tvos_video_playback

WWDC 2020: Master Picture in Picture on tvOS
https://developer.apple.com/videos/play/wwdc2020/10176
The issue with customOverlayViewController API is that it only allows to add a view controller with one row. Allowing user to move left and right as in Apple sample project. But if you have multiple rows then when trying to swipe down, customOverlayViewController is dismissed. User is not able to focus in a second row.
customInfoViewController behaves better allowing you to focus in multiple rows but not to set preferredContentSize height.
Our App has multiple rows so we couldn't use this option.

I submitted FB8042762 to address this issue. I discussed it with Dan during WWDC20 AVFoundation Playback Lab. He advised me to create a bug for this issue. He also advised to use the gesture recogniser since we support tvOS 12 but was concerned about possible issues with PiP in tvOS 14. Seems that his concern was correct.
We are having this issue as well. This seems rather serious. I can see Apple offering an official "swipe-up" implementation - however, there has to be a way to disable this so that apps that have already rolled their own swipe-up are not borked.

I was able to verify that Aleksandr's solution does work - but that feels like a very temporary workaround.
We are facing the same issue.
I'm new to the iOS development.

Any sample code for this fix mentioned in the Aleksandr Medvedev solution will be much appreciated.

Thanks in advance.

Apple has "fixed" https://developer.apple.com/documentation/avkit/avplayerviewcontroller/3229856-customoverlayviewcontroller to support pages with more rows by presenting the customoverlayviewcontroller modally (I suspect). It is fixed in tvOS 14.3. You will still need to use Aleksandr's workaround for 14.0 to 14.2 but at least it is fixed now :)