我在iOS应用程序中使用UIWebView播放YouTube视频,但为了提供本机体验,我使用UIKit实现了播放控件.所以UIWebView仅用于显示视频.
我还实现-remoteControlReceivedWithEvent:了允许从控制中心和耳机上的控制器按钮进行控制.但似乎UIWebView会自动处理来自耳机的远程控制事件.这是一个问题,因为当您切换播放/暂停时,我的代码会暂停视频,然后UIWebView将再次切换它以播放视频.
反正有没有阻止这种情况发生?
相关问题是UIWebView尝试设置"正在播放"信息MPNowPlayingInfoCenter也由我的代码完成.
我的应用程序遇到了同样的问题,它使用AVAudioPlayer. 此应用程序MPNowPlayingInfoCenter在播放期间显示当前音频信息。我的要求是在播放器顶部的 web 视图中显示 html5 视频广告(带音频)。
首先,我仅UIWebView在需要支持 iOS7 时使用,但我遇到了很多问题,其中之一是MPNowPlayingInfoCenter显示广告视频的 url 以代替当前的本机音频播放。我尝试了几种解决方案,例如方法 swizzling onUIWebView没有任何成功。
我发现只有一种对我有用WKWebView的解决方案:默认使用而不是UIWebViewWeb 容器。HTML5 视频播放将不再与 交互MPNowPlayingInfoCenter,我还必须支持 iOS7,所以我创建了一个包装类来UIWebView在 iOS7 和WKWebViewiOS8 等之间切换(仍然存在问题)。
希望这可以帮助。
小智 1
我在尝试解决一些相反的问题时遇到了这个问题:我向应用程序添加了 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
}
Run Code Online (Sandbox Code Playgroud)
由此,我怀疑您可以通过执行以下两件事之一来阻止 UIWebView 处理远程控制事件: 1. 在remoteControlReceivedWithEvent 中包含逻辑以忽略您不想处理的远程控制事件。2. 通过在控制器的 viewDidAppear 方法中调用 resignFirstResponder 让你的 UIWebView 放弃第一响应者的身份。
| 归档时间: |
|
| 查看次数: |
1229 次 |
| 最近记录: |