iOS 11 AVPlayerViewController 禁用捏合/拖动手势
iOS 11 AVPlayerViewController Disable Pinch / Drag Gesture
我有一个 AVPlayerViewController 设置来播放视频,我在自定义视图控制器中嵌入 VC 的视图。
但如果用户尝试,他们可以通过 2 根手指抓取来移动视频。我该如何禁用它?谢谢!
见下文:
在开始播放视频之前尝试这样的操作
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)
}
更安全的做法:
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()
应用程序可能会在删除第一个项目并调整数组大小时崩溃。
我有一个 AVPlayerViewController 设置来播放视频,我在自定义视图控制器中嵌入 VC 的视图。
但如果用户尝试,他们可以通过 2 根手指抓取来移动视频。我该如何禁用它?谢谢!
见下文:
在开始播放视频之前尝试这样的操作
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)
}
更安全的做法:
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()
应用程序可能会在删除第一个项目并调整数组大小时崩溃。