WebView:如何检测我是否在原始网页上并执行某种方法

时间:2013-03-14 20:48:51

标签: ios objective-c cocoa-touch uiwebview

我有这种方法可以在某些情况下在网页视图中回到以前的网页,并且工作正常。但是,我想实现一个功能,检查我是否在原始网页上,如果是这样,当我按下后退按钮时,它会将我带到导航视图控制器。原始页面是这段代码[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]];    
    }
}

2 个答案:

答案 0 :(得分:1)

您可以使用shouldStartLoadWithRequest的委托方法UIWebViewDelegate来检查网址中包含的内容。如果你找到它,那就去NavigationController

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

    if ([[request.URL absoluteString] rangeOfString:@"http://yourURL"].location!=NSNotFound) {
       [self.navigationController popViewControllerAnimated:YES];.    
    }
}

答案 1 :(得分:0)

您需要添加

       <UIWebViewDelegate> 

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

将它设置为委托后,您可以获取absoluteString和requestURL,并覆盖该方法。使用absoluteString,您可以检查子字符串,文本,域,基本上你想要的任何东西!您重写了shouldStartLoadWithRequest或webViewDidFinishLoad:

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

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