dav*_*vis 0 iphone safari maps objective-c uiwebview
我在我的应用程序中的UIWebView中有Web内容.我的目标是让所有链接在应用程序内正常打开,但任何以"http:// maps"开头的链接都会在safari中打开,因此可以在外部iphone地图应用程序中打开它们.如果你有解决这个问题的解决方案现在停止阅读,下面我将提出我的解决方案.目前,所有链接都在应用内打开,因此http://将链接打开到应用内的m.google.com.我正在考虑的解决方案涉及这个代码,它使用openURL打开safari中的所有链接:
(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
\[\[UIApplication sharedApplication] openURL:request.URL];
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
显然这段代码的问题是所有链接都是在safari中打开的,我只想要地图链接.你能建议一种解析链接的方法,只传递以http://映射的函数吗?还有一个更简单的问题,如何委托UIWebView以便我可以运行此代码,并且viewcontroller.m也是放置此代码的正确位置?
如果你们可以建议一个完整的函数,包括上面的openURL部分和链接解析,以确保只有映射链接通过功能很棒.再说一次,如果您有其他解决方案或解决方法,我很乐意听到它.非常感谢你的帮助,stackoverflow一直是救星,我几乎完成了我的第一个项目!
尝试这样的事情:
-(BOOL)webView:(UIWebView *)inWeb
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)inType {
// let UIWebView deal with non-click requests
if (inType != UIWebViewNavigationTypeLinkClicked) {
return YES;
}
// URL starts with "http://maps"?
if ([[request.URL description] hasPrefix:@"http://maps"]) {
// open URL in Safari and return NO to prevent UIWebView from load it
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
// otherwise let UIWebView deal with the request
return YES;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1336 次 |
| 最近记录: |