gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:09:02 27 4
gpt4 key购买 nike

我知道这可能是这个问题的复制 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的子view中。这不起作用:

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,您可以通过重写 touchesBegan 来获取触摸:

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

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com