У меня есть UITextField, и я пытаюсь отформатировать его как номер телефона, однако по какой-то причине я пытаюсь получить первую букву UITextField.UITextField shouldChangeCharactersInRange не обнаруживает первый символ
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
if textField == myTextField {
var updatedTextString : NSString = PartialFormatter().formatPartial(textField.text!)
self.formattedPhoneNumber(updatedTextString, textField: textField)
}
return true
}
func formattedPhoneNumber(updatedTextString: NSString, textField: UITextField) {
textField.text = updatedTextString as String
print(updatedTextString)
}
Что я делаю неправильно?
Пожалуйста, обратите внимание, что я использую PhoneNumberKit для того, чтобы номер формата телефона (и использовать PartialFormatter().formatPartial
)
Edit: Я пытался добавить знак по умолчанию +
в начале текста TextField (как цифры +44 ..)
var updatedTextString : NSString = PartialFormatter().formatPartial("+\(textField.text!)")
Но все прошло совершенно неправильно. Он сначала печатал ++++, а затем исправлял себя для 4 символов и более.
Так выглядит ...
I press 1 - `+1` on UITextField - `+` on console
then press 5 - `++15` on UITextField - `++1` on console
then press 6 - `+++156` on UITextField - `+++15` on console
then press 8 - `+1568` on UITextField - `+1 56` on console
// so it magically fixed itself after 4 chars.
Also removing everything leaves `+++` on UITextField and `++++` on console
and doesn't delete more
Что я делаю неправильно?
Edit 2:
Я попытался с помощью ответа размещенную ниже. Однако теперь это просто цифры. Они не сгруппированы с PartialFormatter().formatPartial()
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
if textField == myTextField {
let textString : NSString = textField.text!
let candidateString : NSString = textString.stringByReplacingCharactersInRange(range, withString: string)
let updatedTextString : NSString = PartialFormatter().formatPartial(candidateString as String)
self.formattedPhoneNumber(updatedTextString, textField: textField)
}
return true
}
Я сделал ваш пример работы и отредактировал ваш ответ. Однако теперь он не группирует числа как «PartialFormatter(). FormatPartial' должен делать; Он просто показывает простые числа. Однако обнаружение персонажей работает нормально – senty