2016-02-19 74 views
0

我有一個的UITextField,我想限制lenght在這裏4個字符是它的代碼:限制的UITextField長度的限制我的一切UITextfields

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
     guard let text = acRegTextField.text else { return true } 

     let newLength = text.utf16.count + string.utf16.count - range.length 
     return newLength <= 4 // Bool 
    } 

問題是,有了這個代碼,我的其他文本框被停止當acRegTextField爲4個字符就可以了。

老實說,我不明白這一點...任何幫助,將不勝感激

感謝

回答

2

如果您的視圖中有許多文本字段並將委派給它們,則shouldChangeCharactersInRange將應用於所有文本字段。所以你可以做的是,如果你已經有了一個應該只包含4個字符的文本字段的插口 - 那麼只需比較這個文本字段就是你想要驗證的字段 - 注意===比較了引用。例如:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
    if acRegTextField === textField { 
     guard let text = acRegTextField.text else { return true } 

     let newLength = text.utf16.count + string.utf16.count - range.length 
     return newLength <= 4 // Bool 
    } 
    return true 
} 
+0

非常好的答案,我知道我不得不以某種方式將它包裝在if語句中,但無法找出它是什麼。解釋很棒,讓我更瞭解它 – Jp4Real

0

這是UITextFieldDelegate的方法。爲了使這項工作,你必須說的地方

myTextField.delegate = myClass 

你說每個文本字段將得到相同的代表。如果您不想將限制應用於特定的textField,則不要爲該textField設置委託。