我的應用程序有一個按鈕,當它被點擊時,它被禁用,活動指示器顯示,後臺任務被執行。此任務完成後,回調會通過啓用按鈕並刪除活動指示器來更新界面。我遇到的問題是任務完成回調函數被執行,但是一段時間活動監視器保持在屏幕上,按鈕看起來像被禁用,但可以再次單擊它。誰能告訴我我要去哪裏?iPhone UIView沒有立即更新
非常感謝!
我的應用程序有一個按鈕,當它被點擊時,它被禁用,活動指示器顯示,後臺任務被執行。此任務完成後,回調會通過啓用按鈕並刪除活動指示器來更新界面。我遇到的問題是任務完成回調函數被執行,但是一段時間活動監視器保持在屏幕上,按鈕看起來像被禁用,但可以再次單擊它。誰能告訴我我要去哪裏?iPhone UIView沒有立即更新
非常感謝!
難道是回調方法正在一個單獨的線程中執行嗎? 我在問,因爲任何對視圖有影響的調用都應該在主線程上執行。
問題可能這樣做可以解決如下:
它可能看起來像這樣有點:
//gets called asynchronously when your operation has completed
-(void)myCallbackHandler {
[self performSelectorOnMainThread:@selector(updateUI) withObject:nil
waitUntilDone:NO];
}
-(void)updateUI {
[myActivityIndicatorView stopAnimating];
[myButton setEnabled:YES];
}
你可以發佈一些代碼嗎? – taskinoor 2010-07-07 10:39:58
我會嘗試提取一些代碼,這是我們在某種程度上繼承的應用程序的一部分。 儘管它做了什麼快速總結。按鈕動作將一個NSInvocationOperation推到一個NSOperationQueue上,當方法被執行時它將一些音頻文件拼接在一起,最後一件事是回調UIViewController類,該類將按鈕控件上的enabled屬性設置爲'YES',並調用'stopAnimating '在活動指標上。 再次感謝。 – Sjblack 2010-07-07 11:05:11