2

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

我正在为委托类型 UITextFieldCondition 使用 lambda 表达式。

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

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

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

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

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

有没有办法做到这一点?

4

1 回答 1

1

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

我认为你需要改变你处理这个问题的方式。也许是这样的:

LoginField.ShouldReturn = textField =>
{ 
    LoginAsync().ContinueWith(t => /* react to t.Result manually here */);
    return false;
};
于 2013-06-26T13:07:28.793 回答