显示模态警报对话框

通常的做法是使用 NSRunLoop 来显示模态 UIAlertView 以阻止代码执行,直到在 iOS 中处理用户输入为止; 直到 Apple 发布 iOS7,它打破了现有的几个应用程序。幸运的是,有一种更好的方法可以使用 C#的 async / await 来实现它。

这是利用 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"); //process the result
}