首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >禁用AVPlayerController上的滑动以关闭

禁用AVPlayerController上的滑动以关闭
EN

Stack Overflow用户
提问于 2017-10-09 09:40:20
回答 3查看 1.7K关注 0票数 2

iOS 11推出了一种关闭AVPlayerController的工具。我有一个针对幼儿的应用程序,所以屏幕很容易被滑动,导致视频关闭。是否要移除关闭球员的手势?

我尝试在AVPlayerController的视图中添加一个手势覆盖,但它不起作用。在How can I add Swipe Gesture to AVPlayer in swift 3上有一个可能的解决方案,但是必须有一个更干净的方法

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-10 12:11:32

我设法解决了问题。正如@Vakas所评论的,AVPlayerController不应该被子类化。我最初对它进行了子类化,并使用了一个模态索引。这是造成问题的原因。

为了解决这个问题,我创建了另一个视图控制器,将AVPlayerController嵌入其中。

代码语言:javascript
运行
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2018-01-10 12:58:27

如果AVPlayerController被嵌入(不显示),则在controls视图中不显示“关闭”按钮。

我的解决方案是找到带有手势识别器的子视图,并删除pan手势识别器。

代码语言:javascript
运行
复制
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)
             }
         }
     }
}
票数 2
EN

Stack Overflow用户

发布于 2020-08-21 23:20:59

上面的评论都没有解决这个问题(iOS 13+)。解决方案:

代码语言:javascript
运行
复制
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
avPlayerViewController.view.addGestureRecognizer(panGestureRecognizer)

其中handlePanGesture(_:)是在屏幕上出现pan时将调用的方法(视频不会移动--这是它被拖动的问题中的问题所在),而avPlayerViewController是AVPlayerViewController实例。

注意:如果您想防止捏/旋转和任何其他手势,您可以为每个手势添加一个新的UI...GestureRecognizer。只需确保设置了所有UI...GestureRecognizers的委托,并实现了该函数:

代码语言:javascript
运行
复制
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46643319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档