当前,我有一个格式为### / ##的文本字段。键入时,键入的格式正确,但是出于某种奇怪的原因,删除时只会删除,直到'/'号为止,并且在此之前不会删除。例如,如果文本为(555/66),它将删除直到(555 /),然后停止删除。任何想法如何解决这个问题?这是代码。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.count == 0 {
var text = textField.text!
let start = text.startIndex
let beginRange = text.index(start, offsetBy: range.location)
let endRange = text.index(start, offsetBy: range.location + range.length)
text = String(text.prefix(upTo: beginRange))
+ String(text.suffix(from: endRange))
text = text.replacingOccurrences(of: "/", with: "")
if text.count >= 2 {
text = String(text.prefix(3)) + "/" + String(text.dropFirst(3))
}
textField.text = text
return false
}
}
答案 0 :(得分:0)
如果您的文本字段格式为### / ##,也可以尝试使用此方法
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.count != 0 {
var text = textField.text!
if range.location == 3
{
text.append("/")
textField.text = text
}
if range.location == 6
{
return false
}
}
return true
}