限制 UITextField 中的字符数

Оле*_*ько 3 ios swift swift3

我看过很多答案,但似乎没有一个有效。我有一个以编程方式创建的带有两个 UITextField 的 UIAlertView。我想限制字符数:

  • 第一个字段中的 12 个字符
  • 第二个字段中的 1 个字符

第一个字段代码:

alertDialog.addTextField { (nameField) in
        nameField.placeholder = "Name"
        nameField.borderStyle = .roundedRect
        nameField.clearButtonMode = .whileEditing
        }
Run Code Online (Sandbox Code Playgroud)

第二

alertDialog.addTextField { (keyField) in
        keyField.placeholder = "Key"
        keyField.borderStyle = .roundedRect
        keyField.clearButtonMode = .whileEditing

    }
Run Code Online (Sandbox Code Playgroud)

如何正确限制数量(假设这些字段中没有粘贴)

Vin*_*gan 6

将 textField 委托设置为相应的类(在我的情况下,self 是 ViewController)

nameField.delegate = self
keyField.delegate = self
Run Code Online (Sandbox Code Playgroud)

然后你可以限制字符

extension ViewController : UITextFieldDelegate {

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        switch textField {
        case nameField:
            if ((textField.text?.length)! + (string.length - range.length)) > 12 {
                return false
            }

        case keyField:
            if ((textField.text?.length)! + (string.length - range.length)) > 1 {
                return false
            }
        }
        return true 
    }
}
Run Code Online (Sandbox Code Playgroud)