当用户在触摸键盘上按GO时,我试图从iOS设备拨打我的网络服务。我希望在与Web服务对话时显示加载指示器。

我将lambda表达式用于委托类型UITextFieldCondition。

    LoginField.ShouldReturn = async textField => {
        await LoginAsync();
        return textField.ResignFirstResponder();
    };


编译器向我显示以下错误:


  无法将异步lambda表达式转换为委托类型`MonoTouch.UIKit.UITextFieldCondition'


如果我同步执行此代码,则该代码有效:

    LoginField.ShouldReturn = textField => {
        Login();
        return textField.ResignFirstResponder();
    };


有办法吗?

最佳答案

基本上,没有办法做到这一点。 UITextFieldCondition的签名意味着您的委托必须同步返回结果。

我认为您需要更改处理方式。也许像:

LoginField.ShouldReturn = textField =>
{
    LoginAsync().ContinueWith(t => /* react to t.Result manually here */);
    return false;
};

关于c# - 如何设置委托(delegate)类型UITextField.ShouldReturn异步?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17319101/

10-11 17:02