文本字段的首字母总是快速显示小写

时间:2019-02-09 05:10:37

标签: ios swift uitextfield

我正在尝试将文本字段的第一个字符显示为小写,如果我可以键入大写字符,也必须将其显示为小写。我尝试过

func textField(_ textFieldToChange: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    signUpEmailTextField.autocapitalizationType = .none
}

但是它对我不起作用,我的目标是当我输入大写字母时也应在文本字段中显示小写字母。

2 个答案:

答案 0 :(得分:1)

一个简单的解决方案是在文本更改时添加目标,并将文本更新为小写:

override func viewDidLoad() {
    super.viewDidLoad()

    signUpEmailTextField.addTarget(self, action: #selector(textFieldChanged), for: .editingChanged)
}

@objc func textFieldChanged() {
    signUpEmailTextField.text = signUpEmailTextField.text?.lowercased()
}

答案 1 :(得分:0)

通过uppercased(),您可以实现

如果您有多个文本字段并且不想在所有文本字段中使用大写字母,您还可以检查条件

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    if let text = textField.text,
        let range = Range.init(range, in: text) {

        let newText = text.replacingCharacters(in: range, with: string).uppercased()
       textField.text =  newText
    }
}