通过UIWebView隐藏和显示UIButton

时间:2013-01-03 18:36:31

标签: ios json uiwebview

  

可能重复:
  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];
    }

3 个答案:

答案 0 :(得分:1)

查看Apple Documentation

用于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在你的页面加载时有一个回调函数。您必须阅读有关此

的文档