2009-07-22 67 views
1

我使用的Objective-C &了iPhone 3.0 SDKUIActivityIndi​​catorView启动/停止前及后网页请求

我想检索URL的内容(网页或PDF)和内显示它UIWebView

似乎做的事情是这样的:

NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL]; 
[myUIWebView loadRequest:requestObject]; 

这个工作得很好,除了1个东西。

有些情况下,请求需要一段时间(比如说5-10秒)。我有一个UIActivityIndi​​catorView,我想在加载请求的开始和结束时“开始”和“停止”。

但是,如果我这样做

[busySignal startAnimating]; 
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL]; 
[myUIWebView loadRequest:requestObject]; 
[busySignal stopAnimating]; 

因为通话的loadRequest完成异步等我UIActivityIndi​​catorView几乎立即

停止它不工作有没有启动方式/停止我的“busySignal”在URL请求的开头和结尾?

作为替代,我想可以通过NSURLConnection的做,给了我的回调函数“connectionDidFinishLoading:”

,但我似乎无法弄清楚如何从NSURLConnection的去显示网页-页。

所以,我想这是2个问题。

1.您可以在调用loadRequest的开始/结束时启动/停止UIActivityIndi​​catorView:? 2.你如何使用NSURLConnection来检索URL的内容并在UIWebView上显示信息?

谢谢!

+0

你是一个王子! – user141146 2009-07-22 03:09:26

回答

5

你真的不想做负载同步在那里,如果你这样做,你的UI在加载时会堵塞多秒。如果您的主要运行循环停止时间过长(互联网连接速度较慢),系统会认为您已崩溃并导致应用程序死亡。

你想要使用UIWebViewDelegate方法,以便在它做什么时得到通知。例如:

myUIWebView.delegate = self; 
NSURLRequest *requestObject = [NSURLRequest requestWithURL:myURL]; 
[myUIWebView loadRequest:requestObject]; 

,然后在你执行以下的委托方法:

//Called whenever the view starts loading something 
- (void)webViewDidStartLoad:(UIWebView *)webView { 
    [busySignal startAnimating]; 
} 

//Called whenever the view finished loading something 
- (void)webViewDidFinishLoad:(UIWebView *)webView_ { 
    [busySignal stopAnimating]; 
} 
0

看那UIWebViewDelegate协议应具备什么u需要,它有requestdidstart装载和这样的方法是那里exacty什么ü想要做

相关问题