2012-02-03 55 views
0

我在活動指示器視圖中存在問題,在頁面加載完成後繼續動畫。該問題僅發生在已經被訪問的UIWebView頁面上。導航欄中的ActivityIndi​​catorView在ViewDidLoad後繼續動畫

我也在使用MBProgressHUD,並按照預期停止了ViewDidLoad之後的動畫。

頁面幾乎立即加載,然後動畫在導航欄中開始。這幾乎就好像從設備緩存中取出頁面,然後應用程序就會去加載它。

微調器只在您訪問不同的視圖控制器時停止動畫。

是否有其他人遇到與此類似的問題?

編輯

- (void)showNetworkActivity { 
    [self performSelector:@selector(showNetworkActivityWithDelay) withObject:nil afterDelay:0.5]; 
} 

- (void)showNetworkActivityWithDelay { 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 
} 

- (void)hideNetworkActivity { 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 

} 

當我刪除延遲工作好。

我繼承了代碼,所以我不確定是否需要延遲。在展示networkActivityIndi​​cator方面有沒有什麼好的理由延遲?

+0

你能否提供一些代碼?謝謝 – 2012-02-03 15:49:23

+0

你在哪裏打電話給showNetworkActivity?我認爲延遲是不必要的。 – 2012-02-03 16:26:56

+0

在webViewDidStartLoad上並隱藏在webViewDidFinishLoad上。似乎沒有隱藏在以前被加載的webViews上。有問題的webViews上的內容只是靜態HTML,不知道這是否會有所作爲。 – Bunkered 2012-02-03 16:30:02

回答

0

這裏的解決方案。

嘗試直接撥打[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

performSelector:withObject:afterDelay:在同一個 線程上調度定時器,以在傳遞的延遲後調用選擇器。

我看不出在這個例子中使用延遲的原因。實際上,如果您使用它,則會在延遲後調用選擇器showNetworkActivityWithDelay,並且您無法立即在屏幕上看到它。

很明顯,你可以繼續使用之前的方法,如包裹活動的指標邏輯以下(但它不是必需的):

- (void)showNetworkActivity { 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 
} 

- (void)hideNetworkActivity { 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 
} 
0

聽起來像你沒有UIWebViewDelegate設置。將代表設置在標題/實現中,然後開始在UIWebViewDelegatewebViewDidStartLoad中啓動動畫指示器,然後停止webViewDidFinishLoadwebViewDidFailLoadWithError中的動畫。

+0

我想我已經混淆了一些事情,因爲它是顯示並繼續動畫的networkActivityIndi​​cator。只有當頁面在被顯示之前重新加載時纔會發生。我的代碼是如何建立Dan H的。 – Bunkered 2012-02-03 15:44:42