要解决AVPlayerViewController在从全屏返回后忽略所有触摸的问题,可以使用以下代码示例:
import UIKit
import AVKit
class CustomPlayerViewController: AVPlayerViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// 添加手势识别器
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTapGesture(_:)))
self.view.addGestureRecognizer(tapGesture)
}
@objc func handleTapGesture(_ gesture: UITapGestureRecognizer) {
// 从全屏返回后忽略所有触摸
if presentingViewController != nil && gesture.state == .ended {
return
}
// 处理其他触摸事件
// ...
}
}
import UIKit
import AVKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 创建AVPlayer对象和AVPlayerItem对象
let player = AVPlayer(url: URL(string: "https://example.com/video.mp4")!)
let playerItem = AVPlayerItem(player: player)
// 创建CustomPlayerViewController
let customPlayerViewController = CustomPlayerViewController()
customPlayerViewController.player = player
customPlayerViewController.player?.replaceCurrentItem(with: playerItem)
// 显示CustomPlayerViewController
present(customPlayerViewController, animated: true, completion: nil)
}
}
通过以上代码,CustomPlayerViewController在从全屏返回后将忽略所有触摸事件。你可以根据自己的需求在handleTapGesture函数中处理其他触摸事件。