iOS 11引入了滑動關閉AVPlayerController。我有針對幼兒的應用程序,因此屏幕很容易被滑動,導致視頻關閉。無論如何刪除手勢關閉播放器?禁用滑動關閉AVPlayerController
我已經嘗試向AVPlayerController的視圖添加一個手勢覆蓋,但它不起作用。 How can I add Swipe Gesture to AVPlayer in swift 3有一個可能的解決方案,但必須有一個更清潔的方式
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?我們使用它的許多功能,因此目前不能編寫我們自己的實施方案 –
如果您找到解決方案,請告知我們。我也在找到禁用滑動關閉的方法 –