UiTextField 的第一个字母小写

69

当您在单击UITextfield后开始键入时,如何使第一个字母不自动大写?


这篇问题的前两个答案似乎可以回答此问题:这不仅是自动大写的问题,还有一个自动更正的问题。关闭自动更正功能,文本字段的第一个字母就不会自动大写了。 - ConfusionTowers
10个回答

177

在Objective-C中:

textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
在Swift中:
textField.autocapitalizationType = .none

1
似乎这并不能解决第一个字母的问题,就好像它是句子的开头。 - David Dunham
2
@DavidDunham,是自动更正功能导致了这种情况。关闭它后,文本字段中的第一个字母将保持小写。这里的前两个答案展示了你需要的内容。 - ConfusionTowers

16

对于SwiftUI,

TextField("I want entered text to be all lowercase", text:$myText)
     .autocapitalization(.none)

14

您可以通过UITextInputTraits协议中的.autocapitalizationType属性关闭自动大写。

textfield.autocapitalizationType = UITextAutocapitalizationTypeNone;

6

您可以在XIB(界面生成器)中的Text Field属性的Text Input Traits中设置TextField的大小写规则。


5

在UITextField中设置setAutocapitalizationType:UITextAutocapitalizationTypeNone。


4

在Swift中,您可以使用autocapitalizationType属性:

yourTextField.autocapitalizationType = .none

4

在Swift中:

textField.autocapitalizationType = UITextAutocapitalizationType.None

更好的做法是:textField.autocapitalizationType = .None - Matias Elorriaga

3
为了完全避免这种情况,我们可以设置三个属性。
textField.autocapitalizationType = .none;

并且
textfield.autocorrectionType = .no;

并且

textField.spellCheckingType = .no

只设置 .autocapitalizationType = .none; 是可行的,但最好同时设置另外两个属性来避免自动更正和拼写检查的大写。


如何禁用所有大写字母,以便用户无法输入它们? - user11182243
嗨@Outsider,为UITextField实现shouldChangeCharactersIn委托方法,然后在该方法中用string.lowercase()替换字符串的范围,并设置yourTextField.autocapitalizationType = .none。 - nikhilgohil11

1

尝试这段代码:

textfieldname.autocapitalizationType = UITextAutocapitalizationTypeNone;

1

当您在目标文本字段中输入任何内容时,此代码将使所有文本字段输入变为小写。

func textField(_ textFieldToChange: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
         //just change this charectar username  it's a text field
        if textFieldToChange == username {
            let characterSetNotAllowed = CharacterSet.whitespaces
            if let _ = string.rangeOfCharacter(from:NSCharacterSet.uppercaseLetters) {
                return false
            }
            if let _ = string.rangeOfCharacter(from: characterSetNotAllowed, options: .caseInsensitive) {
                return false
            } else {
                return true
            }
        }
        return true
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接