这是可以做到的。它可能不干净和漂亮,但这是一种可能的方法:您需要在显示 HTML 之前对其进行解析。
首先,您需要拦截 UIWebView 的加载请求调用,以便检查它是否正在调用包含您需要解析的 Flash 的页面的 URL。要拦截加载请求调用,请使用 UIWebViewDelegate 方法webView:shouldStartLoadWithRequest:navigationType: 读取 URL。
如果 URL 与您需要从中删除 Flash 的 URL 匹配,您将运行加载 HTML 字符串的代码,您将解析到 Web 视图中(稍后会详细介绍)并返回 NO 到webView:shouldStartLoadWithRequest:navigationType: 委托方法。这意味着当用户尝试访问包含 Flash 的页面时,我们将阻止 UIWebView 执行其操作并使用我们自己的解析内容加载视图。
一旦确定需要解析 HTML,就需要进入一个可以使用的变量。以字符串形式获取页面的 HTML:
NSURL *yourURL = [NSURL URLWithString:@"http://google.com"];
NSError *error;
NSString *htmlString = [NSString stringWithContentsOfURL:yourURL encoding:NSUTF8Encoding error:&error];
获得字符串后,要从 HTML 中删除 Flash 代码,请参阅以下问题:
Comment out a string in HTML before UIWebView can display it
解析 HTML 并删除 Flash 后,您可以使用 [webView loadHTMLString:string baseURL:nil]; 将其加载到 Web 视图中
最后,您需要通过代码在 Web 视图顶部插入一个原生电影播放器。您将不得不处理屏幕旋转以及本机播放器在 Web 视图顶部的大小和位置,但我会将这些乐趣留给您。
这是很多原材料,但应该能让你继续寻找可能的解决方案。