我有一个小的嵌入式UIWebView为我的应用程序的部分。当用户在那里点击一个链接时,链接将在该嵌入式UIWebView中打开,该UIWebView当然没有导航控件,并且不是全屏。我不喜欢那样。我可以强迫它打开与Safari的链接吗?如何使用Safari应用程序在UIWebView中启动链接?
0
A
回答
2
您可以实施UIWebViewDelegate协议的shouldStartLoadWithRequest
方法来拦截链接点击。在该方法内部,您可以使用UIApplication的openURL
方法来使URL在相应的应用程序(即用于HTTP/HTTPS的Safari)中打开。
- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
if ([url isEqual:YOUR_HOME_URL_CONTSTANT])
return YES;
[[UIApplication sharedApplication] openURL:url];
return NO;
}
0
您应该实现UIWebViewDelegate的shouldStartLoadWithRequest
。在这里你可以看到UIWebView何时开始加载一个URL。然后,您可以处理应该在此webView中加载的内容以及应由Safari加载的内容。
我的代码如下所示:
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType
{
if (inType != UIWebViewNavigationTypeLinkClicked)
{
//This was not a clicked link, so is probably the initial load
//and should be loaded in the UIWebView
return YES;
}
//This was a clicked link, so load using Safari
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
这里我使用UIWebViewNavigationType
,以确定它是否是一个链接点击,并适当响应。
相关问题
- 1. 。如何从Safari中的链接启动应用程序?
- 2. 从UIWebView *启动移动Safari,无需修改应用程序源?
- 3. 何时在iPhone应用程序中使用UIWebView与Safari?
- 4. 当我的应用程序未安装时,UIWebView中的iOS通用链接将启动Safari?
- 5. 如何从Android中的短信链接启动应用程序?
- 6. 如何在iPhone应用程序的UIWebView中启用“全选”?
- 7. 在Safari中的UIWebView中打开链接
- 8. 如何从iPad应用程序中启动Safari浏览器?
- 9. 使用深度链接启动Android应用程序
- 10. 如何禁用iPhone Safari以启动地图应用程序
- 11. 如何从我的移动应用程序中打开Safari中的链接?
- 12. UIWebView链接在Safari中打开
- 13. 如何在UIWebView中使用Apple(在应用程序中购买)?
- 14. 如何使用Selenium启动Safari Web驱动程序?
- 15. 强制iOS应用程序在safari中打开外部链接
- 16. 在Facebook应用程序如何链接与应用程序链接关联
- 17. 使用NSMutableURLRequest和OAuth从iPhone应用程序启动Safari
- 18. 如何从iPhone应用程序启动Safari?
- 19. 如何使用正确的iOS链接模式从Meteor应用程序启动外部应用程序?
- 20. 如何使用GPRS连接启动Android应用程序
- 21. 如何使用套接字启动应用程序Tornado 4.4
- 22. Facebook iOS应用程序未启用AppLinks启用我的应用程序链接
- 23. 如何在Safari中的UIWebview中打开链接
- 24. 如何在iPhone应用程序中使用弱链接?
- 25. 在iOS中启动和恢复Safari应用程序的会话
- 26. 如何在应用程序内部启动应用程序
- 27. 如何在WPF应用程序中使用启动事件?
- 28. 如何使用Safari URL模式启动应用程序时进行调试
- 29. uiwebView中的Open Itunes应用程序链接
- 30. 在Android应用程序中启用深层链接
当我实现这个时,UIWebView甚至不会启动本地内容。它仍然是空的......奇怪的事情。什么会导致这种情况?这是否也会影响[v loadRequest:request]方法? – 2010-10-19 21:31:31
在此代码中,您需要检查网址以查看它是否应该在Safari中加载。例如,也许你想要以file开头的所有内容:要加载到Web视图中,在这种情况下,此方法需要返回YES。我的猜测是openURL不会打开一个文件url,并且由于NO返回,webview也不会加载它。 – Nimrod 2010-10-19 21:34:21
是的,在我提供的代码片段中,所有加载请求都被推送到外部应用程序。如果您想以不同方式加载特定内容,则可以通过任何方式检查URL的属性,以确定是本地加载还是远程加载。返回值BOOL指定webView是否应该继续并尝试加载内容本身。我会用一个天真的实现来更新这个例子。 – codelark 2010-10-19 22:20:26