设置mediaPlayer.drawable时如何支持手势?



我有一个视图和一个子视图,我需要播放器来播放内容。 所以,当我设置

mediaPlayer.drawable = self.playerView 

let swipeButtonRecognizer = UISwipeGestureRecognizer(target: self, action: selector3)
swipeButtonRecognizer.direction = .up
self.view.addGestureRecognizer(swipeButtonRecognizer)

点击识别器似乎不起作用,手势操作甚至没有调用。 如何拨打?我做错了什么?

我不知道为什么,但是libVLC中的VLCOpenGLES2VideoView正在添加自己的点击手势识别器:

if (sys->viewContainer.window) {
if (sys->viewContainer.window.rootViewController) {
if (sys->viewContainer.window.rootViewController.view)
[sys->viewContainer.superview addGestureRecognizer:sys->tapRecognizer];
}
}

来源: videolan/vlc/modules/video_output/ios.m

也许它干扰了你的手势。

请注意,它正在添加到sys->viewContainer.superview.
那是mediaPlayer.drawable.superview,或者在你的情况下,self.playerView.superview.

解决方法

使用以下任一。

  1. 如果您的视频播放器视图无论如何都不需要用户交互,请将其userInteractionEnabledsuperview设置为NO

    您可以考虑将视频播放器视图嵌入到额外的超级视图中,只是为了它。

  2. 如果超级视图只是一个简单的 UIView,请改用自定义 UIView,然后重写此自定义类中的-addGestureRecognizer

    - (void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer
    {
    [super addGestureRecognizer:gestureRecognizer];
    gestureRecognizer.enabled = false;  // Hey VLCOpenGLES2VideoView! Don't mess with my UI!
    }
    

相关内容

  • 没有找到相关文章

最新更新