WebView与Safari

时间:2011-06-28 12:57:52

标签: iphone objective-c ios uiwebview mobile-safari

我有一个网络应用程序,我正在尝试将其打包为本机应用程序。我正在使用webView来显示网络应用程序。该应用程序包含大量文章,其中一些文章包含指向外部页面的链接。当我点击这些链接时,webView将加载外部页面,我的所有导航都会消失,我基本上被锁定在外部网站上。我没有可能回到应用程序,没有完全退出。

我想要做的是,在将其加载到webView之前,有一个评估URL的脚本。如果服务器与我拥有网络应用程序的服务器不同,我希望链接能够启动移动版Safari。我在网上发现了很多脚本,它可以像我想要的那样,但并不完全。他们检查href,如果href存在则调用移动Safari。这在我的情况下不起作用,因为应用程序中的几乎所有链接都包含href。

我有一个例子,说明我在这里要做的事情:

  

NSURL * requestURL = [[request URL] retain];

  if(( [[requestURL scheme] isEqualToString:@“http://www.some-site.dk/”])          &安培;&安培; (navigationType == UIWebViewNavigationTypeLinkClicked))
  {
      NSLog(@“在本地Safari中打开链接”);
      return![[UIApplication sharedApplication] openURL:[   requestURL autorelease]];
}        NSLog(@“在webView中打开链接”);
[requestURL release];
返回YES;

如何检查url字符串是否与objective-c中的内容不相同?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

我不确定你拿着你的URL字符串是什么,或者它是否完全转义但是如果你将URL移动到某种NSString,那么有很多工具可以查找子字符串。

如果您只是想检查不平等,那么您可以执行类似

的操作
if( ![urlString isEqualToString:@"Whatever you want to test against"] )
{

... execute code here

}

答案 1 :(得分:0)

我最终使用rangeOfString函数来确定所选链接是否包含包含web-app的Web服务器的域名。其他所有内容都会发送到本地Safari。

以下是一个例子:

NSRange infoUrl = [filePath rangeOfString:@"DOMAIN_NAME.COM"];

if (infoUrl.location == NSNotFound)
{
     return ![ [ UIApplication sharedApplication ] openURL: [ requestURL autorelease ] ];
}

return YES;