【发布时间】:2010-05-14 14:35:18
【问题描述】:
我很好奇是否有办法检测UIWebView 中显示的网站的变化。在我正在开发的应用程序中,我们使用UIWebView 来展示部分功能,这些功能基本上是用户需要遵循的几个步骤。但是,在这些步骤结束时,我需要识别一个特定页面,然后应用程序需要显示不同的视图。
不幸的是,UIWebViewDelegate 似乎无法解决问题。
【问题讨论】:
我很好奇是否有办法检测UIWebView 中显示的网站的变化。在我正在开发的应用程序中,我们使用UIWebView 来展示部分功能,这些功能基本上是用户需要遵循的几个步骤。但是,在这些步骤结束时,我需要识别一个特定页面,然后应用程序需要显示不同的视图。
不幸的是,UIWebViewDelegate 似乎无法解决问题。
【问题讨论】:
如果用户步骤在不同的页面上是分开的,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等...
【讨论】:
在 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
}
【讨论】: