在UIWebView中获得有关页面更改的通知

时间:2010-05-14 14:35:18

标签: iphone uiwebview

我很好奇是否有办法在UIWebView内检测到所显示网站的变化。在我正在开发的应用中,我们使用UIWebView来呈现功能的一部分,这些功能基本上是用户需要遵循的几个步骤。但是,这将是我需要识别的这些步骤结束时的特定页面,之后应用程序需要显示不同的视图。

不幸的是,UIWebViewDelegate似乎无法解决问题。

2 个答案:

答案 0 :(得分:23)

如果用户步骤在不同的页面上分开,并且UIWebView需要加载不同的步骤,那么使用委托方法确实可以实现这一点。

在此示例中,我们说用户经历了3个步骤,名为 step1.htm step2.htm ,最后是 step3.htm 。此代码将检测用户何时到达第三步也是最后一步。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString *URLString = [[request URL] absoluteString];
    if ([URLString isEqualToString:@"http://www.example.com/step3.htm"]) {
        // The user reached step 3!
    }
    return YES;
}

请注意,使用absoluteString方法可能不是找出用户浏览位置的最佳方法。请查看querypathparameterString等...

答案 1 :(得分:1)

在Swift 4中

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {

    if request.url?.absoluteString == "http://www.example.com/step3.htm" {
        // The user reached step 3!
    }

    return true
}