强制小写 – ios迅速

我想在用户输入时在UITextfield强制使用小写。 到目前为止我用这段代码出来了,但似乎并没有降低角色。

 func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { if string.characters.count == 0 { return true } let currentText = textField.text ?? "" let prospectiveText = (currentText as NSString).stringByReplacingCharactersInRange(range, withString: string.lowercaseString) switch textField { // Allow only lower-case vowels in this field, // and limit its contents to a maximum of 6 characters. case userNameTextField: return prospectiveText.characters.count <= 27 default: return true } } 

首先,您应在文本字段中设置以下属性以限制自动大写:

 textfield.autocapitalizationType = UITextAutocapitalizationType.None 

这就是你如何进一步限制它:

 func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool { if let _ = string.rangeOfCharacterFromSet(NSCharacterSet.uppercaseLetterCharacterSet()) { // Do not allow upper case letters return false } return true } 

更新SWIFT 4

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { if let _ = string.rangeOfCharacter(from: .uppercaseLetters) { // Do not allow upper case letters return false } return true } 

当事情发生变化时,你可以这样做并小写整个字符串。

 textfield.addTarget(self, action: "textViewChanged", forControlEvents: .EditingChanged); func textViewChanged(){ textfield.text = textfield.text?.lowercaseString; } 

对于swift 3用户,Abhinav给出的上述代码只是转换为以下代码

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { if let _ = string.rangeOfCharacter(from:NSCharacterSet.uppercaseLetters) { return false } return true }