可能重复:
How implement a UIActivityIndicatorView when the UIWebView is Loading? (iPhone ObjC)
我的应用程序的一部分允许用户“更新”应用程序的一部分,他们按下“更新”UIButton
,这会在UIWebView
中加载PHP脚本,但脚本需要加载大约2分钟,在此期间我希望隐藏“更新”按钮,并在网页加载完成后再次显示。
这样做的最佳方法是什么?
到目前为止,我有这个:
- (void)webViewDidStartLoad:(UIWebView *)webUpdate {
[btnUpdate setHidden:YES];
}
- (void)webViewDidFinishLoad:(UIWebView *)webUpdate {
[btnUpdate setHidden:NO];
}
使用此解决:
NSString *myUrl = webView.request.URL.absoluteString;
if ([myUrl isEqualToString:@"http://www.website.com/finalpage.php"]) {
[btnUpdate setHidden:NO];
}
答案 0 :(得分:1)
用于UIWebView的回调方法。具体看
– webViewDidStartLoad:
– webViewDidFinishLoad:
您可以尝试在webview开始加载时隐藏或禁用更新按钮,然后在完成或启用错误时启用它。
编辑: 您可以使用
检查当前网址NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];
你应该在webViewDidStartLoad中增加一个int属性,然后在webViewDidFinishLoad中递减它,这样你就知道你何时处于负载的末尾。
答案 1 :(得分:1)
UIWebViewDelegate
有回电,因此您可以跟踪您的网络视图的进度。
- (void)webViewDidStartLoad:(UIWebView *)webView {
[btnUpdate setHidden:YES];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"Loading: %@", [request URL]);
return YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"didFinish: %@; stillLoading:%@", [[webView request]URL],
(webView.loading?@"NO":@"YES"));
[btnUpdate setHidden:NO];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
NSLog(@"didFail: %@; stillLoading:%@", [[webView request]URL],
(webView.loading?@"NO":@"YES"));
[btnUpdate setHidden:NO];
//alert
}
答案 2 :(得分:0)
我认为uiwebview在你的页面加载时有一个回调函数。您必须阅读有关此
的文档