限制可以在Swift中的uitextfield中输入的字符

fs_*_*gre 0 uitextfield ios swift

我希望能够限制可以输入到文本字段中的字符,例如,我只想限制1-5个数字(1、2、3和5),并且如果用户输入的数字大于5 ,我希望textField不执行任何操作。

我已经看到了如何限制长度,但是如上所述,我找不到任何用于限制某些字符的内容。

我尝试使用,editingQtyFieldChanged但并不能完全满足我的要求。

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

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

    if number < 2{
        print("Number not allowed")
    }
}
Run Code Online (Sandbox Code Playgroud)

在Swift的uitextfield中仅限制数字1-5?

编辑:这是我的解决方案,这要归功于线程。

  func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        let numbers = ["6","7","8", "9"]
        for number in numbers{
            if string == number{
                return false
            }
        }
  }
Run Code Online (Sandbox Code Playgroud)

Fra*_*kie 5

我这样做是作为字符串扩展名

extension String {

   var containsValidCharacter: Bool {
        let characterSet = CharacterSet(charactersIn: "12345")
        let range = (self as NSString).rangeOfCharacter(from: characterSet)
        return range.location != NSNotFound
    }
}
Run Code Online (Sandbox Code Playgroud)

然后用你的shouldChangeCharactersIn方法。

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

    return !string.containsValidCharacter
}
Run Code Online (Sandbox Code Playgroud)