ios - AVPlayer UITapGestureRecognizer 不工作

标签 ios objective-c iphone uitapgesturerecognizer avplayerviewcontroller

我的 AVPlayerViewController 有这段代码。

UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAvPlayer)];
[self.avPlayerViewController.view addGestureRecognizer:tap];

但这不起作用.. :S, 我试过设置

[self.avPlayerViewController.view setUserInteractionEnabled:YES];

还是不行..

唯一可行的解​​决方案是使用 UIGestureRecognizer 并实现它的 shouldReceiveTouch 委托(delegate)并检查 av 播放器是否被触摸..但问题是,我们不想捕获“点击释放”事件。因为如果 av player View 被触摸,它会立即执行代码,这不是我们想要的......

请帮助我们解决这个问题..

谢谢!

最佳答案

AVPlayerViewController 上手势处理的正确位置是在 Controller 的 contentOverlayView 内。

contentOverlayView 是 AVPlayerViewController 的只读属性。这是一个显示在视频上方但在 Controller 下方的 View 。触摸处理的完美场所。您可以在加载时向其添加 subview 或手势处理程序。

以下代码以两种方式为您的视频 Controller 提供触摸支持,以演示手势识别和 UIButton 方法。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"mySegue"])
    {
        // Set things up when we're about to go the the video
        AVPlayerViewController *avpvc = segue.destinationViewController;
        AVPlayer *p = nil;
        p = [AVPlayer playerWithURL:[NSURL URLWithString:@"https://my-video"]];
        avpvc.player = p;

        // Method 1: Add a gesture recognizer to the view
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myAction:)];
        avpvc.contentOverlayView.gestureRecognizers = @[tap];

        // Method 2: Add a button to the view
        UIButton *cov = [UIButton buttonWithType:UIButtonTypeCustom];
        [cov addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
        cov.frame = self.view.bounds;
    }
}

(抱歉,目前还没有准备好编写 Swift 版本。:)

关于ios - AVPlayer UITapGestureRecognizer 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36878609/

相关文章:

objective-c - UITextField 中的彩色子串

ios - 第二次设置核心数据对象会导致 EXC_BAD_ACCESS

iphone - 无法将字符串保存到 SQLite 数据库中(SQLITE_DONE 不返回 true)

ios - 添加Facebook sdk导致找不到opencv文件

ios - Cocoapods - 安装 Mapbox-iOS-SDK 时出错

objective-c - 如何在iphone sdk 上播放ustream 的视频?

ios - 如何以编程方式在 UIScrollview 中创建 UIScrollview

iPhone 合成问题

ios - 如何将当前月份作为字符串获取?

ios - Firebase 崩溃报告 - 并非所有符号文件都已上传