iOS 11推出了一种关闭AVPlayerController的工具。我有一个针对幼儿的应用程序,所以屏幕很容易被滑动,导致视频关闭。是否要移除关闭球员的手势?
我尝试在AVPlayerController的视图中添加一个手势覆盖,但它不起作用。在How can I add Swipe Gesture to AVPlayer in swift 3上有一个可能的解决方案,但是必须有一个更干净的方法
发布于 2017-11-10 12:11:32
我设法解决了问题。正如@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。
发布于 2018-01-10 12:58:27
如果AVPlayerController被嵌入(不显示),则在controls视图中不显示“关闭”按钮。
我的解决方案是找到带有手势识别器的子视图,并删除pan手势识别器。
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)
}
}
}
}发布于 2020-08-21 23:20:59
上面的评论都没有解决这个问题(iOS 13+)。解决方案:
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
avPlayerViewController.view.addGestureRecognizer(panGestureRecognizer)其中handlePanGesture(_:)是在屏幕上出现pan时将调用的方法(视频不会移动--这是它被拖动的问题中的问题所在),而avPlayerViewController是AVPlayerViewController实例。
注意:如果您想防止捏/旋转和任何其他手势,您可以为每个手势添加一个新的UI...GestureRecognizer。只需确保设置了所有UI...GestureRecognizers的委托,并实现了该函数:
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}https://stackoverflow.com/questions/46643319
复制相似问题