2017-10-09 74 views
0

iOS 11引入了滑動關閉AVPlayerController。我有針對幼兒的應用程序,因此屏幕很容易被滑動,導致視頻關閉。無論如何刪除手勢關閉播放器?禁用滑動關閉AVPlayerController

我已經嘗試向AVPlayerController的視圖添加一個手勢覆蓋,但它不起作用。 How can I add Swipe Gesture to AVPlayer in swift 3有一個可能的解決方案,但必須有一個更清潔的方式

+1

你不應該使用AVPlayerController,你必須寫自己的實現視頻播放器與AVPlayer。 – Vakas

+0

爲什麼你不應該使用AVPlayerController?我們使用它的許多功能,因此目前不能編寫我們自己的實施方案 –

+0

如果您找到解決方案,請告知我們。我也在找到禁用滑動關閉的方法 –

回答

0

我設法解決問題。正如@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。

0

如果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) 
      } 
     } 
    } 
}