Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
如何在swift 3上设置文本字段最小字符数_Swift_String_Textfield_Uitextfielddelegate - Fatal编程技术网

如何在swift 3上设置文本字段最小字符数

如何在swift 3上设置文本字段最小字符数,swift,string,textfield,uitextfielddelegate,Swift,String,Textfield,Uitextfielddelegate,我正在寻找一种方法来最小化文本字段中的字符。由于textfield用于用户名输入,我想让用户输入最少4个字符到最多30个字符。首先,我让textfieldshouldChangeCharactersIn设置textfield中的最大字符数。代码看起来不错,但当我想让用户如果用户名文本字段少于4个字符,应用程序会给他们错误或返回false func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange

我正在寻找一种方法来最小化文本字段中的字符。由于textfield用于用户名输入,我想让用户输入最少4个字符到最多30个字符。首先,我让textfield
shouldChangeCharactersIn
设置textfield中的最大字符数。代码看起来不错,但当我想让用户如果用户名文本字段少于4个字符,应用程序会给他们错误或返回false

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 

let currentString = usernameTextField.text!.characters.count ?? 0
        if (range.length + range.location > currentString) {
            return false
        }
        let newLength = currentString + string.characters.count - range.length
        return newLength <= 30
    }
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
让currentString=usernameTextField.text!.characters.count±0
if(range.length+range.location>currentString){
返回错误
}
让newLength=currentString+string.characters.count-range.length

return newLength我将实现
textFieldShouldEndEditing(:)
delegate方法。如果当前长度太短,则返回
false
,并可选地显示某种消息/指示器,以便用户知道出了什么问题

我还将更新
textField(uuu:shouldChangeCharactersIn:replacementString:)
以检查新长度是否太短。如果太短,请禁用保存按钮或其他适当的UI组件,让用户知道他们需要修复。

func textField应返回(textField:UITextField)->Bool{
func textFieldShouldReturn(textField: UITextField) -> Bool {
    let fieldTextLength = textField.text!.characters.count

    if  fieldTextLength < 4 || fieldTextLength  > 30 {
        //do something about it
    }
    self.view.endEditing(true)
    return true
}
让fieldTextLength=textField.text!.characters.count 如果fieldTextLength<4 | | fieldTextLength>30{ //做点什么 } self.view.endEditing(true) 返回真值 }

最后我真的不明白你的问题,但这应该可以解决!

问题是当任何用户输入的usernameTextField少于4个字符,大于30个字符时,给他一个false。我做了最后一部分(大于30个字符)但是我找不到少于4个字符的解决方案。这不是正确的方法。即使文本字段太短或太长,此代码仍然允许键盘关闭。