Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制小写-ios swift_Ios_Xcode_Swift_Uitextfield - Fatal编程技术网

强制小写-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}更好一点;)也就是说如果你不想在字符串中留下任何空间。我以为你只想限制第一个:)。无论如何,很高兴我能帮上忙。干杯:)!