我在iOS应用中使用UIWebView播放YouTube视频,但为了提供原生体验,我使用UIKit实现了播放控制。所以UIWebView仅用于显示视频。
我还实施了-remoteControlReceivedWithEvent:
以允许控制中心和耳机上的控制器按钮进行控制。但似乎UIWebView会自动处理来自耳机的远程控制事件。这是一个问题,因为当您切换播放/暂停时,我的代码会暂停视频,然后UIWebView将再次切换它以播放视频。
有没有阻止这种情况发生?
相关问题是UIWebView
尝试设置"正在播放" MPNowPlayingInfoCenter
的信息也由我的代码完成。
答案 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辞职成为第一个响应者。