【发布时间】:2011-03-04 11:27:57
【问题描述】:
我正在后台运行网络请求,我希望用户能够取消此请求。在 Web 请求运行时,我使用带有取消按钮的 UIActionSheet。当 Web 请求返回错误时,我通过调用 DismissWithClickedButtonIndex(0, true) 关闭 UIActionSheet。然后我会显示一个带有错误消息的 UIAlertView 以及取消或重试 Web 请求的选项。
大部分时间一切正常,但有时我会在控制台输出窗口中收到“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 线程上运行,只要线程可以处理它。这是正确的还是有更好的方法来解决这个问题?
【问题讨论】:
标签: iphone xamarin.ios uialertview