如何防止UIWebView视频获取远程控制事件

时间:2014-11-25 23:22:49

标签: ios uiwebview

我在iOS应用中使用UIWebView播放YouTube视频,但为了提供原生体验,我使用UIKit实现了播放控制。所以UIWebView仅用于显示视频。

我还实施了-remoteControlReceivedWithEvent:以允许控制中心和耳机上的控制器按钮进行控制。但似乎UIWebView会自动处理来自耳机的远程控制事件。这是一个问题,因为当您切换播放/暂停时,我的代码会暂停视频,然后UIWebView将再次切换它以播放视频。

有没有阻止这种情况发生?

相关问题是UIWebView尝试设置"正在播放" MPNowPlayingInfoCenter的信息也由我的代码完成。

2 个答案:

答案 0 :(得分:3)

我在使用AVAudioPlayer播放音频的应用中遇到了同样的问题。 此应用在播放期间显示MPNowPlayingInfoCenter中的当前音频信息。 我的要求是在我的播放器顶部的webview中显示html5视频广告(带音频)。

首先我只使用UIWebView,因为我需要支持iOS7,但我遇到了很多问题,其中一个是MPNowPlayingInfoCenter,它显示了广告视频的网址,取代了当前的原生音频播放。 我尝试了几种解决方案,例如UIWebView上的方法调整,但没有成功。

我发现只有一个适合我的解决方案:默认情况下使用WKWebView而不是UIWebView网络容器。 HTML5视频播放不再与MPNowPlayingInfoCenter交互,我不得不支持iOS7,所以我创建了一个包装类,在iOS7上切换UIWebView(仍有问题),在iOS8切换WKWebView等等。

希望这有帮助。

答案 1 :(得分:0)

我在尝试解决相反的问题时遇到了这个问题:我在应用程序中添加了UIWebView,当UIWeb视图显示时,远程控制事件无效,但在应用程序的其他地方工作。 在我的情况下,解决方案是将这3个方法添加到我的新UIWebView的控制器中,这些方法存在于我的应用程序中的所有其他视图控制器上:

- (void) viewDidAppear:(BOOL)animated  {
    [self becomeFirstResponder];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self resignFirstResponder];
}

-(void)remoteControlReceivedWithEvent:(UIEvent *)event {
    // Logic to handle remote control events
}

由此,我怀疑您可以通过执行以下两项操作之一来阻止UIWebView处理远程控制事件: 1.在remoteControlReceivedWithEvent中包含逻辑,以忽略您不想处理的远程控制事件。 2.通过在控制器的viewDidAppear方法中调用resignFirstResponder,让您的UIWebView辞职成为第一个响应者。