iOS UIWebView loadRequest

时间:2014-04-16 23:07:08

标签: ios audio uiwebview

我使用UIWebView播放.mp3文件。使用Safari因为它给了我音频控件而没有额外的代码,我无法看到如何使用AVPlayer。它很简单并且运行良好,只有一个例外。 .mp3基于地区播放。它将正确播放第一个区域的音频文件。但是每个后续区域首先播放该区域的音频,然后立即播放第一个音频。所以,第一个区域播放audio_region_1。第二个区域触发audio_region_2,然后触发audio_region_1。第N个区域再次触发audio_region_n,然后再触发audio_region_1。它总是播放两个文件,第二个文件始终是应用程序中的第一个。启动,播放,关闭新的Safari视图,然后打开,播放和关闭第二个Safari视图。关于为什么或如何排除故障的任何想法?

NSURL *currentRegion = [[NSBundle mainBundle]URLForResource: regionIdentifier withExtension:@"mp3"];
NSURLRequest *currentRegionForSafari = [NSURLRequest requestWithURL: currentRegion];
[_viewWeb loadRequest: currentRegionForSafari];
NSLog(@"        ** ** ** Narration shud have finished:%@.mp3", regionIdentifier);
  1. 我应该使用像webViewDidFinishLoad这样的东西然后显式调用stopLoading或类似的东西吗?
  2. log仅显示当前区域的NSLog消息,即regionIdentifier的预期值。
  3. log显示"设置电影路径的两个实例:"匹配上述行为。
  4. 提前感谢并原谅问题的简单性。这是我的第一个IOS应用程序。

2 个答案:

答案 0 :(得分:0)

每次需要播放其他声音时,请确保您有不同的区域。

此外,我不确定它是否会对您有所帮助,只需尝试此代码:

[[NSURLCache sharedURLCache] removeAllCachedResponses];
NSURL *currentRegion = [[NSBundle mainBundle]URLForResource: regionIdentifier withExtension:@"mp3"];
NSURLRequest *currentRegionForSafari = [NSURLRequest requestWithURL: currentRegion];
[currentRegionForSafari setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[_viewWeb loadRequest: currentRegionForSafari];

答案 1 :(得分:0)

基本问题是UIWebView缓存了之前发送给它的.mp3,并在当前加载请求完成后播放。有趣的是,它正在缓存第一个.mp3发送的不是最后一个,如你所料。无论如何,我评估了两个关于在另一个问题上找到的UIWebView的“清理内容”的建议。

这对我有用,在我的加载请求方法的入口处添加。

 [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];

以下是其他问题的网址,如果它可以帮助其他人:

How to clean the content of UIWebView without loading an empty page?