我有一个UIActivityIndicator应该循环,直到加载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。
你有任何提示吗?我是个菜鸟,我觉得我犯了一些愚蠢的错误...... 感谢
答案 0 :(得分:5)
听起来约书亚在评论中有正确的想法。负载是异步的,将在负载实际完成之前返回。
如果您的pdfView
是UIWebView,则可以使用UIWebViewDelegate
方法webViewDidFinishLoad:
来了解PDF加载完成的时间。如果您将[act stopAnimating]
放在那里,它应该有效。
如果出现任何错误,您还需要将其置于webView:didFailLoadWithError:
。
要在pdfView
上设置代理,请执行以下操作:[pdfView setDelegate:self];
并确保你的控制器采用这样的UIWebViewDelegate
:
@interface ClassName : ItsSuperclass < UIWebViewDelegate >