The observed behavior appears to be related to the changes made to AVPlayerViewController in tvOS 13.
On tvOS 12, touchesBegan is called whenever the center of the remote gets an indirect select touch gesture. (Not a click; just resting a finger on the remote without pressure).
On tvOS 13 and beyond, the view controller no longer gets touch events.
How can a parent view controller get an indirect UITouch events that has an AVPlayerViewController subview?
Additional Notes
On tvOS 12, touchesBegan is called whenever the center of the remote gets an indirect select touch gesture. (Not a click; just resting a finger on the remote without pressure).
On tvOS 13 and beyond, the view controller no longer gets touch events.
How can a parent view controller get an indirect UITouch events that has an AVPlayerViewController subview?
Additional Notes
Adding a custom UITapGestureRecongnizer did not work. It appears that AVPlayerViewController intercepts the gesture and never passes it on to the next responder.
Embedding the AVPlayerViewController as a child did not work and is excluded from the sample code for simplicity
pressesBegan on tvOS 13 gets called for indirect touches (not a press). It's not clear whether an event is a indirect or direct.
Code Block swift import UIKit import AVKit class ViewController: UIViewController { private var playerViewController: AVPlayerViewController! override func viewDidLoad() { super.viewDidLoad() playerViewController = AVPlayerViewController() playerViewController.player = AVPlayer(url: url) playerViewController.player?.play() view.addSubview(playerViewController.view) playerViewController.view.frame = view.bounds } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { super.touchesBegan(touches, with: event) print(#function) // Not called on tvOS 14 or tvOS 13 } } private let url = URL(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")!