如何在Swift中将文本字段输入限制为某个数字范围

时间:2015-11-01 04:33:22

标签: swift textfield

enter image description here我已设法阻止用户使用文字委托功能在“月”字段中输入超过2位数字:

Swift code

但是,我还想阻止用户输入大于12的数字。有人能指出我正确的方向吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

使用Int(myString) < 13运算符在return条件中添加&&

答案 1 :(得分:0)

在didload中

txt_field.delegate=self
txt_field.addTarget(self, action:"submit:", forControlEvents: UIControlEvents.EditingChanged)

然后将“submit”方法定义为

   @IBAction func submit(sender: AnyObject) {
    let a:Int? = txt_field.text.toInt()
    if a > 12{
        print("number is greater than 12")
    }
    else{
        print("number is less than 12")
    }  
}
每次用户停止编辑文本字段时,都会调用“submit”方法。因此,您可以检查用户输入的内容并阻止他输入大于12的值。

希望它有所帮助。 快乐的编码。

答案 2 :(得分:0)

textEdit.delegate = self来自您的视图控制器

extension UserProfileViewController: UITextFieldDelegate {

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

    let numberFiltered = string.components(separatedBy: NSCharacterSet(charactersIn: "0123456789").inverted).joined(separator: "")

    guard string == numberFiltered, range.location < 2 else {
        return false
    }

    if let newValue = textField.text?.intValue, let currentValue = string.intValue {
        let totalValue = newValue*10 + currentValue

        switch totalValue {
        case 16..<80:
            return true
        default:
            textField.text = ""
            return false
        }
    }
    return true
} }