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

时间:2016-10-24 22:53:37

标签: ios swift uitextfield

我希望能够限制可输入文本字段的字符,例如我想限制为仅1-5个数字(1,2,3和5)以及用户是否输入数字大于5,我希望textField什么都不做。

我已经看到了如何限制长度,但我无法找到任何限制某些角色的内容,正如我在上面所描述的那样。

我尝试使用<li id="myMemberStatsBestResponses" class="ms-comm-myMemberStatsItem"><span class="ms-comm-reputationNumbers">199</span> best replies</li>,但它并没有完全符合我的要求。

editingQtyFieldChanged

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

编辑:这是我的解决方案,感谢this主题。

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

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

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

2 个答案:

答案 0 :(得分:4)

我这是一个字符串扩展名

extension String {

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

然后在您的shouldChangeCharactersIn方法中。

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

    return !string.containsValidCharacter
}

答案 1 :(得分:1)

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