2

可能重复:
当 UIWebView 加载时如何实现 UIActivityIndi​​catorView?(iPhone 对象)

我的应用程序的一部分允许用户“更新”应用程序的一部分,他们按下“更新” UIButton,这会在 a 中加载一个 PHP 脚本UIWebView,但是该脚本需要大约 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];
    }
4

3 回答 3

1

查看Apple 文档

用于 UIWebView 的回调方法。具体来看

– webViewDidStartLoad:
– webViewDidFinishLoad:

您可以尝试在 webview 开始加载时隐藏或禁用更新按钮,然后在完成或发生错误时启用它。

编辑:您可以检查当前网址

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];

而且您可能应该在 webViewDidStartLoad 中增加一个 int 属性,然后在 webViewDidFinishLoad 中减少它,以便您知道何时处于加载结束状态。

于 2013-01-03T18:41:33.213 回答
1

UIWebViewDelegate有回调,所以你可以跟踪你的 webviews 的进度。

- (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
            }
于 2013-01-03T18:46:59.270 回答
0

我认为当你的页面加载时 uiwebview 有一个回调函数。您必须阅读有关此的文档

于 2013-01-03T18:43:14.150 回答