限制Swift 2中多个UITextField的长度

Ben*_*Ben 1 uitextfield ios swift

一个限制一个长度的解决方案TextField但是功能count已经更新,也是count()功能,所以我不明白如何使用这个:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    let newLength = count(textField.text.utf16) + count(string.utf16) - range.length
    return newLength <= 10 // Bool
}
Run Code Online (Sandbox Code Playgroud)

如何更新这个以多个工作TextField,我想我必须说

textField = thisTextField.text...
Run Code Online (Sandbox Code Playgroud)

han*_*nad 5

shouldChangeCharactersInRange执行以下操作(引自文档)

询问代理是否应更改指定的文本.

您添加的此方法代码会检查它是否超出您的限制(在您的示例中,它是10)并返回false,这意味着textField不应更改值.如果它没有超过限制,它将返回true,textField将更改值.

要为多个textField执行此操作,您需要具有多个textField的出口,然后此方法中的简单if语句将完成此任务.

@IBOutlet weak var textfield1: UITextField!
@IBOutlet weak var textfield2: UITextField!

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    let newLength = textField.text.characters.count + string.characters.count - range.length
    if textField == textField1 {
        return newLength <= 10 // Bool
    } else if textField == textField2 {
        return newLength <= 15 // Bool
    }

    return true
}
Run Code Online (Sandbox Code Playgroud)

为了能够在代码中使用上述方法UIViewController,包含这些textFields的方法需要实现UITextFieldDelegate协议,然后将UITextField's delegate属性设置为UIViewController.

还有关于count方法.它已经多次更新.要计算字符串的字符数:

在Swift1.2之前- > countElements(string)
Swift1.2 - > count(string)
Swift2 - > string.characters.count