Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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的UITEXT字段中输入的字符_Ios_Swift_Uitextfield - Fatal编程技术网

Ios 限制可以在Swift的UITEXT字段中输入的字符

Ios 限制可以在Swift的UITEXT字段中输入的字符,ios,swift,uitextfield,Ios,Swift,Uitextfield,我希望能够限制可以输入到文本字段中的字符,例如,我希望限制为仅1-5个数字(1、2、3和5),如果用户输入的数字大于5,我希望文本字段不做任何操作 我已经看到了如何限制长度,但我找不到任何东西来限制我上面描述的某些字符 我尝试使用编辑qtyfieldchanged,但它并不能完全满足我的需要 myField.addTarget(self, action: #selector(UserInputViewController.fieldChanged), forControlEvents: UICo

我希望能够限制可以输入到文本字段中的字符,例如,我希望限制为仅1-5个数字(1、2、3和5),如果用户输入的数字大于5,我希望文本字段不做任何操作

我已经看到了如何限制长度,但我找不到任何东西来限制我上面描述的某些字符

我尝试使用
编辑qtyfieldchanged
,但它并不能完全满足我的需要

myField.addTarget(self, action: #selector(UserInputViewController.fieldChanged), forControlEvents: UIControlEvents.EditingChanged)

func fieldChanged(){
    let number = Int(myField.text!)

    if number < 2{
        print("Number not allowed")
    }
}

在委托中,解析文本并将其转换为数字。如果数字不在您的范围内,则将文本设置为其先前的值或采取任何适当的操作。

在委托中,解析文本并将其转换为数字。如果数字不在您的范围内,则将文本设置为其先前的值或采取任何适当的操作。

我将此作为字符串扩展名执行

extension String {

   var containsValidCharacter: Bool {
        let characterSet = CharacterSet(charactersIn: "12345")
        let range = (self as NSString).rangeOfCharacter(from: characterSet)
        return range.location != NSNotFound
    }
}
然后在
方法中的
应更改字符

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

    return !string.containsValidCharacter
}

我将其作为字符串扩展名来执行

extension String {

   var containsValidCharacter: Bool {
        let characterSet = CharacterSet(charactersIn: "12345")
        let range = (self as NSString).rangeOfCharacter(from: characterSet)
        return range.location != NSNotFound
    }
}
然后在
方法中的
应更改字符

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

    return !string.containsValidCharacter
}

什么是
编辑qtyfieldchanged
?没有记录此类事件(至少对于Swift 3而言)。我的错是,我键入了错误的方法。什么是
编辑qtyfieldchanged
?没有记录此类事件(至少对于Swift 3而言)。我的错,我键入了错误的方法。感谢您的重播。感谢您的重播。感谢您的建议。很好的解决方案,只是没有理由反转
返回之前,并且
shouldChangeCharactersRange
函数是否也会阻止退格。为了解决这个问题,我必须插入
guard string!=“”else{return true}
返回字符串之前。containsValidCharacter
谢谢你的建议。很好的解决方案,只是没有理由反转
返回之前,并且
shouldChangeCharactersRange
函数是否也会阻止退格。为了解决这个问题,我必须插入
guard string!=“”else{return true}
返回字符串之前。containsValidCharacter