强制小写-ios swift
当用户键入时,我希望在强制小写-ios swift,ios,xcode,swift,uitextfield,Ios,Xcode,Swift,Uitextfield,当用户键入时,我希望在UITextfield中强制使用小写。 到目前为止,我已经给出了这个代码,但似乎它并没有降低字符数 func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { if string.characters.count == 0 { return true
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
}
}
func textField(textField:UITextField,shouldChangeCharactersRange:NSRange,replacementString:string)->Bool{
如果string.characters.count==0{
返回真值
}
让currentText=textField.text??“”
让prospectiveText=(当前文本为NSString)。StringByReplacingCharactersRange(范围,带字符串:string.lowercaseString)
开关文本字段{
//此字段中只允许小写元音,
//并将其内容限制为最多6个字符。
案例用户名文本字段:
return prospectiveText.characters.count首先,应在文本字段上设置以下属性以限制自动大写:
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
}
如果要将所有输入字符转换为小写,应执行以下代码:
Swift 4:
在覆盖func viewDidLoad()
中添加以下内容:
textfield.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: UIControlEvents.editingChanged)
然后将此函数添加到类中:
@objc func textFieldDidChange(_ textField: UITextField) {
if let text:String = textfield.text {
DispatchQueue.main.async {
self.textfield.text = text.lowercased()
}
}
}
有必要在主线程中更改它。谢谢!我有一个问题要问你如何避免“空格”在键盘中不允许用户点击?我相信您只想限制用户输入的初始空间…如起始字符。这可以通过在上述方法中为返回false
来轻松限制,如果string=''
。让whitespaceSet=NSCharacterSet.whitespaceCharacterSet()让range=string.rangeOfCharacterFromSet(whitespaceSet)如果让{range{return false}更好一点;)也就是说如果你不想在字符串中留下任何空间。我以为你只想限制第一个:)。无论如何,很高兴我能帮上忙。干杯:)!