【发布时间】:2017-12-22 14:32:39
【问题描述】:
我正在尝试为信用卡到期日期创建一个文本字段并使用以下代码。
if range.length > 0 {
return true
}
if string == "" {
return false
}
if range.location > 6 {
return false
}
var originalText = textField.text
let replacementText = string.replacingOccurrences(of: " ", with: "")
if !CharacterSet.decimalDigits.isSuperset(of: CharacterSet(charactersIn: replacementText)) {
return false
}
if range.location == 4 {
originalText?.append("/")
textField.text = originalText
}
return true
但是,使用该代码用户可以编写 5145/52,这对于到期日期是不正常的。如何将年份限制在 2000 到 2018 和月份值 01 到 12 之间?
【问题讨论】:
-
发布提取此代码的整个方法。 (这是取自
textField(_:shouldChangeCharactersIn:replacementString:)方法吗?) -
在我的 viewDidLoad 方法中,我正在调用以下函数 expiryField.addTarget(self, action: #selector(textField(_:shouldChangeCharactersIn:replacementString:)), for: .editingDidBegin)
-
顺便说一句,您为什么要将年份限制在 2018 年?年份范围应该是从当前年份到 50 年后的范围。
-
@AtalayAsa 您将年份和月份集中到一个文本字段中是否有原因?
-
我不会写答案,因为从技术上讲这不是,但我强烈建议您使用选择器进行此类输入,这样您就可以控制一切并自动减少工作量
标签: ios swift uitextfield date-format