我有一个视图和一个子视图,我需要播放器来播放内容。 所以,当我设置
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
.
解决方法
使用以下任一。
如果您的视频播放器视图无论如何都不需要用户交互,请将其
userInteractionEnabled
superview
设置为NO
。您可以考虑将视频播放器视图嵌入到额外的超级视图中,只是为了它。
如果超级视图只是一个简单的 UIView,请改用自定义 UIView,然后重写此自定义类中的
-addGestureRecognizer
:- (void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer { [super addGestureRecognizer:gestureRecognizer]; gestureRecognizer.enabled = false; // Hey VLCOpenGLES2VideoView! Don't mess with my UI! }