2011-09-20 79 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有一個非常棒的會議,並且還討論了驗證問題,所以它將與您的案例匹配! :)