-2

我在 Web 视图中显示 HTML 文件。当用户单击超链接时,我想在同一个应用程序中移动另一个视图。我该怎么做?

" href = "新视图控制器""

“新视图控制器”的 URL 是什么?

怎么找??

谢谢。

4

2 回答 2

0

这很简单。如果您正在创建 html,那么您应该知道链接是什么样的。如果是这样,在加载 webview 之前检查链接是一件简单的事情。您应该将 webview 的委托设置为 self ,然后执行以下操作:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [NSString stringWithFormat:@"%@", request.URL];
if([urlString isEqualToString:@"http://www.myCustomHyperLink"])
{
 [self.navigationController pushViewController:myNextViewController];
 return NO;
}
return YES;
}

在上面的例子中,如果 url 是你需要打开下一个视图的 url,导航控制器会推送下一个视图控制器并返回 NO,这样 webview 就不会被重新加载。否则 webview 会重新加载页面。

您可以将 if 语句更改为适合您需要的任何内容。

我在这样的应用程序中使用它:

我在一个视图中有多个链接。所以,如果链接是我自己的,我会在第二个视图控制器中打开它。否则,我会打开 Safari。这是因为我不想将我的应用程序变成浏览器。所以我有类似的东西:

if([urlString rangeOfString:@"www.myDomain.com"].location == NSNotFound)
{
 [[UIApplication sharedApplication] openURL:request.Url];
}
else 
...push the next view controller how I showed you above.
于 2012-09-11T09:49:23.263 回答
0

没有用于视图控制器的地址,但您可以添加事件来捕获锚点的点击。

这是一个例子:

在 HTML 文件中:

<a href="#HELLO">Hello World</a>


在您的 .m 文件(xCode)中:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request   navigationType:(UIWebViewNavigationType)navigationType{

NSURL * URL = [request URL];

if ([URL rangeOfString:@"#HELLO"].location != NSNotFound) {
// Do whatever you want here.
}

return YES;
}

每次更改 webview 的位置时,shouldStartLoadWithRequest 都会激活,当您单击锚点时,位置将为例如:file.html#HELLO

于 2012-09-11T08:08:55.197 回答