【问题标题】:A robust, full-feature UIWebView controller implementation?一个健壮的、功能齐全的 UIWebView 控制器实现?
【发布时间】:2011-03-31 19:55:02
【问题描述】:

我想将尽可能完整的嵌入式浏览器功能放入我的 iPhone 应用程序中。当用户从用户的配置文件视图中点击 URL 时,它只会被推送到 UINavigationController。

应该:

  • 拥有完整的预期浏览器控件和使用标准图标的加载状态指示器:后退、前进、加载微调器、停止按钮、在 safari 中打开按钮等。

  • 通过弹出警报(取消/重试等)正确处理网络和其他加载失败

  • 尽可能智能地处理 mailto:// 和其他可能的非 http 链接

  • 最好有一个可编辑的地址栏

  • 响应所有界面方向

  • 一般来说,浏览器可以在应用程序内使用,而无需将用户发送到 Safari 应用程序。

UIWebView 本身需要大量帮助才能完成所有这些修饰,而且我通过 Google 找到的所有在线教程都很粗略。另外还有各种各样的陷阱(比如我发现的关于困难方式的 mailto:// 链接问题等)

我希望不必在这里重新发明轮子来获得尽可能完整的浏览器。有没有我找不到的开源实现?

谢谢!

【问题讨论】:

  • 此外,它应该正确处理 YouTube 和其他媒体链接。如果你只依赖默认行为,你会得到什么……很奇怪。

标签: iphone browser uiwebview uiviewcontroller


【解决方案1】:

“是否有我找不到的开源实现?”从来没听说过。 要处理 mailto:// tel:// 你需要做的就是 UIWebView 委托有一个方法

- (BOOL)webView:(UIWebView *)webView 
shouldStartLoadWithRequest:(NSURLRequest *)request 
 navigationType:(UIWebViewNavigationType)navigationType 
{
    NSURL *clickedURL = [request URL];
    NSString *clickedURLString =[NSString stringWithFormat:@"%@",clickedURL];
    NSString* checkURLValid = [clickedURL host];
    NSString* schemeOfURLClicked = [clickedURL scheme];
}

你可以得到点击 URL 的方案 .. 如果它的 mailto:// 然后做点什么, tel:// [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://1-800-275-第2273章

但 safari 与 UIWebView 仍然有很大不同。 UIWebView 无法直接处理弹出窗口。您可能想查看 http://niw.at/articles/2009/02/06/how-to-enable-the-popup-window-on-uiwebview/en 并且处理身份验证未内置于 UIWebView 这是一个 hack http://www.iphonedevsdk.com/forum/iphone-sdk-development/33944-http-basic-authentication-request-uiwebview.html UIWebView 的其余部分您可以在任何地方找到教程。

【讨论】:

    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    相关资源
    最近更新 更多