0

在某些情况下,我有这种方法可以在 Web 视图中返回上一个网页,并且效果很好。但是,我想实现一个函数来检查我是否在原始网页上,如果是,当我按下后退按钮时,它会将我带到导航视图控制器。原始页面是这个代码[webView loadHTMLString:self.item.description baseURL:[NSURL URLWithString:self.item.link]];。现在我需要弄清楚如何检查我是否在该页面上,如果是,我需要执行以下代码:[self.navigationController popViewControllerAnimated:YES];. 任何帮助将不胜感激。

- (void)back
{
    if ([webView canGoBack]) {
        [webView goBack];
    } else {
        [webView loadHTMLString:self.item.description baseURL:[NSURL URLWithString:self.item.link]];    
    }
}
4

2 回答 2

1

You can use the delegate method shouldStartLoadWithRequest of UIWebViewDelegate to check what contains in the url. if you find it then just go NavigationController

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

    if ([[request.URL absoluteString] rangeOfString:@"http://yourURL"].location!=NSNotFound) {
       [self.navigationController popViewControllerAnimated:YES];.    
    }
}
于 2013-03-14T20:51:03.520 回答
0

您需要添加

       <UIWebViewDelegate> 

到标题。然后将 webView.delegate 设置为 yes;

将其设置为委托后,您可以获取 absoluteString 和 requestURL,并覆盖该方法。使用 absoluteString,您可以检查子字符串、文本、域,基本上是您想要的任何内容!您覆盖 shouldStartLoadWithRequest 或 webViewDidFinishLoad:

   -(void)webViewDidFinishLoad:(UIWebView *)webView 
   -(void)shouldStartLoadWithRequest :(UIWebView *)webView 

每次加载任何网页时都会调用。

于 2013-03-14T20:58:57.287 回答