如何异步设置委托类型UITextField.ShouldReturn?

时间:2013-06-26 11:44:12

标签: c# delegates lambda xamarin.ios async-await

当用户在触摸键盘上按GO时,我正试图从iOS设备拨打我的网络服务。我希望在与网络服务进行通信时显示加载指示符。

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

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

编译器显示以下错误:

  

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

如果我同步执行代码,则代码可以正常运行:

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

有办法吗?

1 个答案:

答案 0 :(得分:1)

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

我认为您需要改变处理方式。也许是这样的:

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