У меня есть 4 UITextFields
в одном UIView
как это:Автоматическое переключение между UITextFields с Swift
каждый UITextField
ограничен до 4 символов. Я хочу реализовать автоматическое переключение между UITextFields
с количеством символов каждого UITextField
.
я использую shouldChangeCharactersIn
для ограничения символов:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let maxLength = 4
var newString = String()
let currentString: NSString = textField.text! as NSString
newString = currentString.replacingCharacters(in: range, with: string)
return newString.length <= maxLength
}
и это мое переключение реализации:
func textFieldDidChange(_ textField: UITextField){
let text = textField.text
if text?.utf16.count == 4 {
switch textField {
case firstPartTextField:
secondPartTextField.becomeFirstResponder()
case secondPartTextField:
thirdPartTextField.becomeFirstResponder()
case thirdPartTextField:
fourthPartTextField.becomeFirstResponder()
default:
break
}
}
}
моя проблема перейти к предыдущей UITextField
в удалении текстов, я не могу обнаружить BackSpace событие, когда UITextField
пуст.
(1) [Не все кредитные карты имеют длину 16 цифр] (http://stackoverflow.com/a/19161529/224671) (2) Возможно, вы могли бы использовать [существующие ] (https://github.com/3lvis/FormTextField) [библиотеки] (https://stripe.github.io/stripe-ios/docs/Classes/STPPaymentCardTextField.html) вместо того, чтобы изобретать свои собственные. – kennytm
Попробуйте этот ответ, это сработало для меня http://stackoverflow.com/a/39483754/6245319 –
Мне лично не нравится вводить число в 4 отдельных текстовых поля :( – muescha