2009-07-22 34 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什麼ü想要做

相關問題