将字符限制分配给特定的UITextField

时间:2017-01-31 23:25:14

标签: ios swift uitextfield

以下代码有效但适用于所有TextField。如何将其限制为一个特定的TextField?

代码:

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

    let currentCharacterCount = (textField.text?.characters.count) ?? 0
    if (range.length + range.location > currentCharacterCount){
        return false
    }
    let newLength = currentCharacterCount + string.characters.count - range.length
    return newLength <= 9
}

2 个答案:

答案 0 :(得分:0)

两个选项

1)仅针对那一个TextField实现您在let user = User() user.email = "john@apple.com" user.password = "hey" user.company?.name = "apple" user.company?.id = "12" // here, if I check with debugger, all variable are properly filled user.persist() // here : company is = nil // it is nil at the 'print(company) // it is not nil before 实现中引用的代码。我非常喜欢这个选项。

2)有条件地检查唯一标识您感兴趣的TextField的内容,例如UITextFieldDelegate属性。仅运行该TextField的字符计数检查。否则,默认为true。

我从不使用tag属性来识别UI元素,也不建议使用它。但是,我看到它经常使用。

tag

答案 1 :(得分:0)

假设您有两个textField,而您的控制器是两者的委托。

  @IBOutlet var aMagesticTextField: UITextField!
  @IBOutlet var anotherMagesticTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        aMagesticTextField.delegate = self
        anotherMagesticTextField.delegate = self
    }

在shouldChangeCharactersIn中,根据已知的文本字段检查textField参数。

        if textField == aMagesticTextField {
            //It's aMagesticTextField
        }
        else {
            //It's anotherMagesticTextField
        }