我很好奇是否有办法在UIWebView
内检测到所显示网站的变化。在我正在开发的应用中,我们使用UIWebView
来呈现功能的一部分,这些功能基本上是用户需要遵循的几个步骤。但是,这将是我需要识别的这些步骤结束时的特定页面,之后应用程序需要显示不同的视图。
不幸的是,UIWebViewDelegate
似乎无法解决问题。
答案 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
方法可能不是找出用户浏览位置的最佳方法。请查看query
,path
,parameterString
等...
答案 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
}