Вы используете для замены только значение replaceString, которое является последним набранным символом, а не всю строку целиком.
Так что, если я наберу '1', функция использует 1 в качествезначение, а затем, если я наберу '0', чтобы получить 10, ваша функция использует только '0' в качестве значения.
Вам нужно получить весь текст текстового поля amountText и использовать его.Вы можете получить это, взяв textField.text, а затем заменив указанный диапазон на replaceString.
Если честно, гораздо проще просто зарегистрироваться на UITextFieldTextDidChangeNotification
вместо использования метода textfield:shouldChangeCharactersInRange:replacementString:
.
Подробнее см. в этом ответе .