5

所以我找不到任何关于如何做到这一点的文档,也许有人知道这里发生了什么。

我在我的应用程序中的 UITableView(带有 UINavigationController)中,并通过将 Web 视图的控制器推送到导航控制器的堆栈上来启动在互联网上加载 mp3 文件的 UIWebView。这很好用,文件在 Safari 使用的 quicktime 播放器中启动和播放。

问题是,一旦音频文件播放完毕,或者用户单击完成按钮,播放器就会被释放,并且应用程序会返回到带有导航栏的空 webView。我可以点击后退按钮回到我原来的 UITableView,但是那个空白屏幕很难看,需要离开。

那么,我可以使用什么操作将 [webviewcontroller.navigationcontroller popviewcontroller] 消息放入?它是否加载了其他类的实例(如 AVAudioPlayer)来播放音频?我需要子类化一些东西吗?Apple 关于如何在 UIWebView 中播放音频的文档基本上不存在。

4

3 回答 3

5

好的,所以我找到了一个更好、更简单的解决方案;我必须从我的应用程序中删除代码行才能使用。我只是使用了 UIWebview initWithFrame:CGRectMake(0.0,0.0,1.0,1.0),没有将其添加到视图中,然后调用了 NSURLRequest,并将其连接到我的按钮。媒体播放器自动全屏,无需调用导航控制器。

于 2009-02-21T02:26:04.363 回答
1

这可能会为某人节省一两个小时:UIWebView 在设备和模拟器上的行为不同(大约 iOS 4.1)。

我只是花了一些时间试图关闭模拟器上的 webview,但它一直在设备上工作。

于 2010-12-17T22:25:22.923 回答
1

您可以通过一些 javascript 更改 location.href 来伪造它,然后执行以下操作:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
        navigationType:(UIWebViewNavigationType)navigationType {

    NSString* path=[[request URL] relativePath];
    BOOL shouldContinue=YES;

    if ([path isEqualToString:@"/_my_custom_link"])
    {
        shouldContinue=NO;
        // do magical stuff
    }
    return shouldContinue;
}

如果这不起作用,您可以随时通过执行

stringByEvaluatingJavaScriptFromString 
于 2009-02-17T21:39:10.050 回答