我在後臺運行一個web請求,我希望用戶能夠取消這個請求。在Web請求運行時,我使用帶取消按鈕的UIActionSheet。當Web請求返回錯誤時,我通過調用DismissWithClickedButtonIndex(0,true)來關閉UIActionSheet。然後,我顯示一個帶有錯誤消息的UIAlertView,並顯示取消或重試Web請求的選項。UIAlertView:wait_fences:未能收到回覆:10004003
大部分時間都可以正常工作,但有時在控制檯輸出窗口中出現「wait_fences:failed to receive reply:10004003」消息,並且偶然會出現一些奇怪的UI行爲。
我做了一些搜索,發現這是由控制權轉移給UIAlertView之前,下層視圖無法控制引起的。有些人建議通過使用PerformSelector延遲顯示AlertView。這是正確的解決方案嗎?如果是這樣,我該如何將UIAlertView的Show方法傳遞給PerformSelector方法的第一個參數?
目前我使用的延遲時間,該解決方案:
private void StartAfterParentViewUpdate(NSAction action)
{
NSAction delayedAction =() => BeginInvokeOnMainThread(action);
NSTimer.CreateScheduledTimer(new TimeSpan(0, 0, 0, 0, 200), delayedAction);
}
這樣我可以調用StartAfterParentViewUpdate(_alertView.Show),我想它會在主UI線程上只要線程可以處理它運行。這是正確的還是有更好的方法來解決這個問題?