如何限制文本字段的小时和秒?

时间:2017-08-17 14:11:27

标签: ios swift

假设我有一个文本字段,需要分钟和小时作为输入。现在,我如何将小时的文本字段限制为仅24和分钟字段为60。

2 个答案:

答案 0 :(得分:1)

文本字段的内容可以通过其委托方法进行控制,包括询问是否为shouldChangeCharacters的方法。如果用户输入超出范围的内容,则可以通过返回false进行更正,甚至不允许。

但是,良好的UI实践是不要让用户开始犯错。这就是pickers的原因。

答案 1 :(得分:0)

使您的ViewController类符合UITextFieldDelegate协议,设置minuteField.delegate = selfhourField.delegate = self,然后实现shouldChangeCharactersIn range函数并检查输入是否为数字和数字字符< = 2.您可以使用didEndEditing检查该数字是否在预期范围内。

extension VC: UITextFieldDelegate {
    func textFieldDidEndEditing(_ textField: UITextField) {
        if textField == minuteField {
            guard let minuteText = textField.text, let minutes = Int(minuteText) else {return}
            if minutes < 0 || minutes > 60 {
                textField.text = ""
            }
        } else if textField == hourField {
            guard let hourText = textField.text, let hours = Int(hourText) else { return }
            if hours < 0 || hours > 24 {
                textField.text = ""
            }
        }
    }

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if string.isEmpty {
            return true
        } else if string.rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) != nil {
            return false
        } else if let numberOfChars = textField.text?.characters.count, numberOfChars >= 2 {
            return false
        } else {
            return true
        }
    }
}