使用monotouch如何验证用户输入的数据?我正在为我的iPhone应用程序创建一个简单的联系表单。
在asp.net中,我可能会使用验证摘要来显示验证消息和必填字段,或检查正则表达式的电子邮件地址输入。
然而,对于iPhone,我认为当用户在UITextField中输入一些数据时,我可以在触摸事件上验证该用户,然后在警告对话框中显示验证消息?
如何以这种方式验证我的窗体形式?
答案 0 :(得分:1)
我认为这就是你这样做的方式:
子类UITextFieldDelegate
。覆盖ShouldEndEditing()
。在ShouldEndEditing()
中验证用户输入的数据。如果数据无效,请创建并显示UIAlertView
,解释数据无效的原因,并从false
返回ShouldEndEditing()
(或使用其他方式表示存在问题)。如果数据有效,请返回true
。将UITextFieldDelegate
子类对象分配给UITextField
对象的Delegate
属性。
解释Apple文档:
当要求文本字段重新签名第一个响应者状态时,将调用此方法
[ShouldEndEditing()]
。当您的应用程序要求文本字段重新对焦或用户尝试将编辑焦点更改为其他控件时,可能会发生这种情况。但是,在焦点实际更改之前,文本字段会调用此方法,以便让您的代理人有机会决定是否应该这样做。通常,您将从此方法返回“true”以允许文本字段重新签署第一个响应者状态。但是,如果您的委托在文本字段中检测到无效内容,则可能返回“false”。通过返回“false”,您可以阻止用户切换到另一个控件,直到文本字段包含有效值。
答案 1 :(得分:0)
试试这个:
/// <summary>
/// Validates a text field, ensuring two letters
/// </summary>
public class CustomUITextFieldDelegate : UITextFieldDelegate
{
public override bool ShouldEndEditing (UITextField textField)
{
if (textField.Text.Length != 2) {
UIAlertView alert = new UIAlertView ("Invalid State", "Please enter a two letter state.", null, "OK", null);
alert.Show ();
return false;
}
return true;
}
}
tvState.Delegate = new CustomUITextFieldDelegate();