嗨:)所以首先可能代码..
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let newString = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) else { return true }
var newLength = newString.characters.count
switch textField {
case numberTextField:
textField.text = newString.grouping(every: 4, with: " ")
if newLength > 18 {
dateTextField.becomeFirstResponder()
}
case dateTextField:
textField.text = newString.grouping(every: 2, with: "/")
if newLength > 4 {
cvcTextField.becomeFirstResponder()
} else if (textField.text?.isEmpty)! {
numberTextField.becomeFirstResponder()
}
case cvcTextField:
textField.text = newString
if newLength >= 3 {
newLength = 3
} else if (textField.text?.isEmpty)! {
dateTextField.becomeFirstResponder()
}
default:
return false
}
return false
}
我有3 UITextFields
。第一个是每4个字符放一个空格,每2个字符放第二个斜线,但这并不重要。我们想在他们之间顺利进行。
在达到UITextField
之后移动到下一个MaxLength
非常简单。它只是将newResponder设置为下一个UITextField
。很酷..但是如果我们处于中间UITextField
它是空的并且我们想要转移到前一个怎么办?按下键盘上的删除按钮什么都不做(我们应该检测退格?)。输入例如一个数字后,删除它,它可以工作......它转到前一个所以一切都很好,除了空UITextField
..
有什么想法吗?
谢谢!
编辑:所以我认为可以解决问题的方法是在当前TextField
上按下新数字后,maxLenght应该直接转到下一个TextField,而不是空UITextField
它应该填充我们之前UITexField
可能会按下的数字吗?