在iOS上处理用户输入之前,通常使用NSRunLoop显示模式UIAlertView来阻止代码执行。在苹果发布iOS7之前,它中断了很少的现有应用程序。幸运的是,有一种更好的方法通过C#的async / await实现它。
这是利用异步/等待模式来显示模式UIAlertView的新代码:
Task ShowModalAletViewAsync (string title, string message, params string[] buttons)
{
var alertView = new UIAlertView (title, message, null, null, buttons);
alertView.Show();
var tsc = new TaskCompletionSource ();
alertView.Clicked+= (sender, buttonArgs) => {
Console.WriteLine("User clicked on {0}", buttonArgs.ButtonIndex);
tsc.TrySetResult(buttonArgs.ButtonIndex);
};
return tsc.Task;
}
//Usage
async Task PromptUser() {
var result = await ShowModalAletViewAsync
("Alert", "Do you want to continue?", "Yes", "No"); //处理结果
}