2013-06-26 20 views
2

当用户在触摸键盘上按GO时,我正尝试从iOS设备拨打我的web服务。我想要一个加载指示器在与web服务对话时显示。如何异步设置委托类型UITextField.ShouldReturn?

我为代表类型UITextFieldCondition使用lambda表达式。

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

编译器显示我下面的错误:

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

有没有做这件事的办法:如果我去做了同步

Cannot convert async lambda expression to delegate type `MonoTouch.UIKit.UITextFieldCondition'

代码工作?

回答

1

基本上,没有办法做到这一点。 UITextFieldCondition的签名表示您的代理人同步返回结果。

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

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