Xcode - UIActivityIndi​​cator过早消失

Miw*_*iwi 2 pdf xcode objective-c 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Joe*_*Joe 5

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

如果您pdfView是UIWebView,则可以使用该UIWebViewDelegate方法webViewDidFinishLoad:知道PDF何时完成加载.如果你把[act stopAnimating]它放在那里它应该工作.

您还希望将其置于webView:didFailLoadWithError:有错误的位置.

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