Xcode - UIActivityIndi​​cator过早消失

时间:2012-09-10 13:58:50

标签: objective-c xcode pdf uiwebview uiactivityindicatorview

我有一个UIActivityIndi​​cator应该循环,直到加载PDF文件。

我无法理解为什么,但是在加载PDF之前指示符会消失。 我无法理解PDF文件是否太大(1,4 MB),如果我的应用程序冻结,或者我在代码中写错了

-(void)startTheProcess {

    act = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    //coordinate act
    [act setCenter:CGPointMake(320 / 2, 440 / 2)];
    self.act.hidden = FALSE;
    [self.view addSubview:act];
    [act startAnimating];
    [UIApplication sharedApplication].networkActivityIndicatorVisible = TRUE;
    [NSThread detachNewThreadSelector:@selector(creaVista) toTarget:self withObject:nil];
}

- (void) creaVista{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSURL *url = [NSURL URLWithString:@"http://www.something.com/file.pdf"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [pdfView loadRequest:request];
    [pdfView setScalesPageToFit:YES];
    [self performSelectorOnMainThread:@selector(processDone) withObject:nil waitUntilDone:NO];
    [pool release];
}
-(void)processDone {

    [act stopAnimating];
    [UIApplication sharedApplication].networkActivityIndicatorVisible = FALSE;
}

如果我调试它,我可以很容易地看到调试器快速进入[act stopAnimating]然后停止,但文件尚未加载:几秒钟后出现PDF。

你有任何提示吗?我是个菜鸟,我觉得我犯了一些愚蠢的错误...... 感谢

1 个答案:

答案 0 :(得分:5)

听起来约书亚在评论中有正确的想法。负载是异步的,将在负载实际完成之前返回。

如果您的pdfView是UIWebView,则可以使用UIWebViewDelegate方法webViewDidFinishLoad:来了解PDF加载完成的时间。如果您将[act stopAnimating]放在那里,它应该有效。

如果出现任何错误,您还需要将其置于webView:didFailLoadWithError:

要在pdfView上设置代理,请执行以下操作:[pdfView setDelegate:self]; 并确保你的控制器采用这样的UIWebViewDelegate
@interface ClassName : ItsSuperclass < UIWebViewDelegate >