禁用滑动关闭AVPlayerController
问题描述:
iOS 11引入了滑动关闭AVPlayerController。我有针对幼儿的应用程序,因此屏幕很容易被滑动,导致视频关闭。无论如何删除手势关闭播放器?禁用滑动关闭AVPlayerController
我已经尝试向AVPlayerController的视图添加一个手势覆盖,但它不起作用。 How can I add Swipe Gesture to AVPlayer in swift 3有一个可能的解决方案,但必须有一个更清洁的方式
答
我设法解决问题。正如@Vakas评论说的,AVPlayerController不应该被分类。我最初将其分类并使用模态赛格呈现。这是造成这个问题的原因。
为了解决这个问题,我创建了另一个视图控制器,它嵌入了AVPlayerController。
import UIKit
import AVKit
class PlayerViewController: UIViewController, AVPlayerViewControllerDelegate {
var videoRecord: Video!
var presentingController = ""
var videos = [Video]()
var presentingPlaylist: Playlist?
let playerViewController = TFLPlayerController()
override func viewDidLoad() {
super.viewDidLoad()
playerViewController.delegate = self
playerViewController.videoRecord = videoRecord
playerViewController.videos = self.videos
playerViewController.allowsPictureInPicturePlayback = false
// Add the original AVPlayerController in here
self.addChildViewController(playerViewController)
let playerView = playerViewController.view
playerView?.frame = self.view.bounds
self.view.addSubview(playerView!)
playerViewController.didMove(toParentViewController: self)
}
}
我基本上使用这个视图控制器来通过视频等属性到原来的子类AVPlayerController。
答
如果AVPlayerController被嵌入(不呈现),控制视图中不显示关闭按钮。
我的解决办法是找到与手势识别子视图,并删除平移手势识别
for v in playerViewController.view.subviews {
if v.gestureRecognizers != nil {
for gr in v.gestureRecognizers! {
if gr is UIPanGestureRecognizer {
// remove pan gesture to prevent closing on pan
v.removeGestureRecognizer(gr)
}
}
}
}
你不应该使用AVPlayerController,你必须写自己的实现视频播放器与AVPlayer。 – Vakas
为什么你不应该使用AVPlayerController?我们使用它的许多功能,因此目前不能编写我们自己的实施方案 –
如果您找到解决方案,请告知我们。我也在找到禁用滑动关闭的方法 –