2011-09-20 78 views
1

我这里检查现有的例子所以,对于我来说,你觉得哪一个更好,iPhone:的UITextField验证

有在一个视图中许多文本框,我想验证他们刚当用户编辑该特定的文本域,否则我必须一起验证它们,当用户按下屏幕上的下一个比我显示所有验证信息,我不想打扰。我想以两种不同的方式验证文本字段,如果它的数字输入我想验证它在一个定义的范围内,例如,如果数字介于5和1000之间,或者如果它的文本,然后如果文本的长度在一个定义的范围内例如2到10个字符之间。用户必须能够输入超出范围的任何输入。

哪个更好;

使用文本框:shouldChangeCharactersInRange

或者是这样的:

[textField addTarget:self action:@selector(validateField:) forControlEvents:UIControlEventEditingChanged]; 

,要么在情况下,我怎么能检查在运行时输入的号码在范围内且不要允许用户输入大或变小号码

回答

0

好的。

您的问题的答案是 1)将标记值设置为所有文本字段。 2)使用UIControlEventEditingDidBegin并触发一个方法来验证currentone之前的文本字段。

[textfield1 setTag:1]; 
    [textfield2 setTag:2];// make sure to set tag values incrementally 
    [textfield2 addTarget:self @selector(validate:) forControlEvents:UIControlEventEditingDidBegin]; 
-(void) validate:(id) sender 
{ 
    // 10 is the number of textfields, change it accordingly. 

    if(sender.tag!=1 && sender.tag!=10) 
    { 

      //validate textfield with tag sender.tag-1 
    } 
    else 
    { 
     //handle first and last textfield here 
    } 
} 

试试这个,可能这会解决你的问题。

0

其实,你的两种方法都会很好!使用UITextFielddelegate来呼叫textField:shouldChangeCharactersInRange并执行验证,因为使用目标&动作也有同样好的方法。在这两种情况下,你都定义了一个处理程序,它接收调用UITextField作为参数(这是@Anil Kumar在他的标记文本字段的答案中的一个实现,但实际上甚至不需要,您可以致电isEqual:文本字段直接检查是否相等)。

个人而言,我倾向于使用委派来完成这些任务。

更新:如果你想真正喜欢这个问题,你会使用Reactive Cocoa。 Ray Wenderlich Gang的April Tech Talk有一个非常棒的会议,并且还讨论了验证问题,所以它将与您的案例匹配! :)