私はバックグラウンドでWebリクエストを実行していますので、このリクエストをキャンセルすることができます。私は、Web要求が実行されている間、キャンセルボタンを含むUIActionSheetを使用します。 Webリクエストがエラーを返すと、DismissWithClickedButtonIndex(0、true)を呼び出してUIActionSheetを閉じます。次に、UIAlertViewにエラーメッセージと、Webリクエストをキャンセルまたは再試行するオプションを表示します。UIAlertView:wait_fences:返信の受信に失敗しました:10004003
ほとんどの場合、ほとんどの場合うまく動作しますが、コンソール出力ウィンドウに "wait_fences: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スレッド上で実行されます推測します。これは正しいですか、この問題を解決する良い方法がありますか?