ios - AVPlayerViewController UITapGestureRecognizer 在 ios 11 中不起作用

标签 ios swift uiview uitapgesturerecognizer avplayerviewcontroller

我知道这可能是这个问题的重复AVPlayer UITapGestureRecognizer not working

但是,我仍然发布它,因为我没有足够的代表对原始答案发表评论。

问题是如何将 UITapGestureRecognizer 添加到 AVPlayerViewController 中。我尝试过的事情:

let wake_overlayview = UITapGestureRecognizer(target: self, action:#selector(self.wake_YCOverlayView))

(1) 将手势识别器添加到 Controller 的 View 中。这不起作用:

self.player.view.addGestureRecognizer(wake_overlayview)

(2) 将其添加到contentOverlayView:

self.player.contentOverlayView?.addGestureRecognizer(wake_overlayview)

这个解决方案似乎在这个答案中有效https://stackoverflow.com/a/48797984/4342489 。但是,这对我不起作用...

(3) 初始化一个UIView,在其上添加gestureRecognizer,然后将该 View 添加到AVPlayer.view subview 中。这不起作用:

self.gesture_view.frame = CGRect(x: 0,
                                 y: 0,
                                 width: self.player.view.frame.size.width,
                                 height: self.player.view.frame.size.height)

self.player.view.addSubview(self.gesture_view) 
self.player.view.bringSubview(toFront: self.gesture_view)  
self.gesture_view.addGestureRecognizer(wake_overlayview)  
self.gesture_view.isUserInteractionEnabled = true

(4) 将识别器添加到player.view的第一个 subview 中。这适用于 ios 10,但不适用于 11,因为在 11 中,player.view 没有任何 subview ...

self.player.view.subviews[0].addGestureRecognizer(wake_overlayview)

最佳答案

查看您的代码,看起来您是 AVPlayerViewController 的子类。不建议这样做。来自 Apple documentation:

Important

Do not subclass AVPlayerViewController. Overriding this class’s methods is unsupported and results in undefined behavior.

但是,如果您仍然想继承 AVPlayerViewController 的子类,您可以通过覆盖 TouchBegan 来获取触摸:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    print("touchesBegan")
}

关于ios - AVPlayerViewController UITapGestureRecognizer 在 ios 11 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49835808/

相关文章:

ios - 从 xib IBOutlets nil 快速加载 UIViewController

ios - Storyboard UITableView 不显示静态内容

ios - [UITableView dequeueReusableCellWithIdentifier :forIndexPath:] 中的断言失败

swift - 在 Swift 中从 Radius 中的 GeoFire 检索 key

ios - 将 Traget 添加到 UIView 中的 UIButton。收到错误 "terminating with uncaught exception of type NSException"

ios - 如何从 PFUser 解包 Optionals 链以访问 bool 值

ios - 命令/usr/bin/codesign 失败,退出代码为 1 Xcode CocoaPods

swift - 如何从同一目标内的不同 .swift 文件访问 iVar?

swift - 编程约束未按预期工作

ios - Swift - UIViews 以编程方式排序