我已经搜索了一个答案,但无法找到与此相关的答案。输入每个字符后验证文本字段
我想验证每个输入到一个文本字段,但不知道如何去做,这个想法是检查服务器上存在的用户名,所以我会假设我需要发布到服务器每次输入的东西如果成功做了什么。
可能有人请告知我将不胜感激。
我已经搜索了一个答案,但无法找到与此相关的答案。输入每个字符后验证文本字段
我想验证每个输入到一个文本字段,但不知道如何去做,这个想法是检查服务器上存在的用户名,所以我会假设我需要发布到服务器每次输入的东西如果成功做了什么。
可能有人请告知我将不胜感激。
您可以使用addTarget:action:forControlEvents:
与UIControlEventValueChanged
(例如:[textfield addTarget:self action:@selector(usernameChanged:) forControlEvents:UIControlEventValueChanged
)。这会在文本更改后通知您(因此,当您收到usernameChanged:
时,您将进行最后修改)。
这可能是一个好主意,每当用户名发生变化时,您可以不发送请求到服务器,而是在文本字段丢失字幕或从最后一次更改过去一段时间时发送请求(您可以使用NSTimer
)。
您应该使用单个异步请求。如果请求处于活动状态并再次编辑文本字段,则应取消该请求并将其设置为零(因为没有理由检查旧用户名)。如果请求成功显示图标,或者从服务器获取结果时想执行的操作。
编辑: 不知道UIControlEventValueChanged
工作在iOS上的早期版本,或者如果它是从我身边一个错误,但它似乎没有任何失效。应该使用UIControlEventEditingChanged
。
非常感谢你的帮助我会研究这也似乎是最好的方式去!谢谢 – SirL0fty
Ole说的是绝对正确的。我只是给你一个他想说的例子。
首先符合你的类的UITextFieldDelegate
协议。然后,确保在viewDidLoad
(或类似),您的委托设置为你的类:
myTextField.delegate = self;
接下来,你可以实现奥莱刚提过的方法。然而,在你的情况你不验证用户能否输入任何内容或没有,你只是想知道什么他进入这样你就可以在网上进行验证。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
[self verifyTheUserWithUsername:[textField.text stringByReplacingCharactersInRange:range withString:string]];
//do your appropriate check here
return YES; //we allow the user to enter anything
}
'[self verifyTheUserWithUsername:textField。文本];在'shouldChangeCharactersInRange:'方法中不能很好地工作,因为它在应用到文本字段之前通知编辑。 –
感谢你的例子队友我现在就试试这个! – SirL0fty
@ SirL0fty:我会毫不犹豫地选择Ole和babbidi提到的建议。在每次按键之后检查服务器是否会让您的应用程序崩溃。启动一个计时器并使其失效,如果按下另一个键肯定会是要走的路。我建议像检查间隔时间一样。 –
检查此链接:http://stackoverflow.com/questions/5765654/textfield-validation-with-regular-expression。真的令人印象深刻的答案..它帮助我。祝你好运 – Meet