iOS 11 AVPlayerViewController 禁用捏合/拖动手势

问题描述 投票:0回答:3

我有一个 AVPlayerViewController 设置来播放视频,并且我将 VC 的视图嵌入到自定义视图控制器中。

但是,如果用户尝试,他们可以通过两根手指抓取来移动视频。我如何禁用此功能?谢谢!

见下图:

ios swift ios11 avplayerviewcontroller
3个回答
2
投票

更安全的做法:

    let recognizers: [UIGestureRecognizer] = view.subviews.first?.gestureRecognizers ?? []
    for (idx, recognizer) in recognizers.enumerated() {
        if recognizer is UIPinchGestureRecognizer || recognizer is UIPanGestureRecognizer {
            positions.append(idx)
        }
    }
    for position in positions.reversed() {
        view.subviews.first?.gestureRecognizers?.remove(at: position)
    }

如果您不使用

positions.reversed()
,应用程序可能会在删除第一个项目并且调整数组大小时崩溃。


1
投票

在开始播放视频之前尝试类似的操作

var positions = [Int]()
for (idx, recognizer) in (playerVC.view.subviews[0].gestureRecognizers?.enumerated())! {
    if recognizer is UIPinchGestureRecognizer || recognizer is UIPanGestureRecognizer {
        positions.append(idx)
    }
}
for position in positions {
    playerVC.view.subviews[0].gestureRecognizers?.remove(at: position)
}

0
投票

您实际上可以在一行中完成所有这一切 - 无需手动条件删除:

view.subviews.first?.gestureRecognizers?.removeAll(where: { $0 is UIPinchGestureRecognizer || $0 is UIPanGestureRecognizer })
© www.soinside.com 2019 - 2024. All rights reserved.