假设我有一个文本字段,需要分钟和小时作为输入。现在,我如何将小时的文本字段限制为仅24和分钟字段为60。
答案 0 :(得分:1)
文本字段的内容可以通过其委托方法进行控制,包括询问是否为shouldChangeCharacters的方法。如果用户输入超出范围的内容,则可以通过返回false
进行更正,甚至不允许。
但是,良好的UI实践是不要让用户开始犯错。这就是pickers的原因。
答案 1 :(得分:0)
使您的ViewController类符合UITextFieldDelegate
协议,设置minuteField.delegate = self
和hourField.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
}
}
}