Я не нашел способа заставить клавиатуру с номером ASCII и десятичным разделителем сразу. На iPhone 8, когда у пользователя есть только арабская клавиатура, для .decimalPad
будет отображаться клавиатура с только восточными арабскими цифрами (٠١٢٣٤٥٦٧٨٩), когда есть несколько клавиатур (например, с английской клавиатурой), у пользователя будет кнопка переключения для смены различных цифр. Но это поведение нарушено для семейства iPhone X для меня, я думаю, что это ошибка со стороны Apple, кнопка переключения не существует.
Я решил эту проблему с помощью метода textField (_: shouldChangeCharactersIn: replaceString:) и внутри этого метода я заменяю Восточные арабские цифры (Арабский-Индийский?) На цифры ASCII (известные также как Западно-арабские цифры ) для проверки правильности ввода символов при наборе.
result = [result stringByReplacingOccurrencesOfString:@"٠" withString:@"0"];
result = [result stringByReplacingOccurrencesOfString:@"١" withString:@"1"];
result = [result stringByReplacingOccurrencesOfString:@"٢" withString:@"2"];
result = [result stringByReplacingOccurrencesOfString:@"٣" withString:@"3"];
result = [result stringByReplacingOccurrencesOfString:@"٤" withString:@"4"];
result = [result stringByReplacingOccurrencesOfString:@"٥" withString:@"5"];
result = [result stringByReplacingOccurrencesOfString:@"٦" withString:@"6"];
result = [result stringByReplacingOccurrencesOfString:@"٧" withString:@"7"];
result = [result stringByReplacingOccurrencesOfString:@"٨" withString:@"8"];
result = [result stringByReplacingOccurrencesOfString:@"٩" withString:@"9"];
result = [result stringByReplacingOccurrencesOfString:@"٫" withString:@"."];
Я делаю то же самое в textFieldDidEndEditing: . Есть вероятность, что этот шаг не нужен, но мне нужно отформатировать число и после потери фокуса.
Это исправление находится в стадии тестирования, и я сообщу вам, если есть какие-либо проблемы с этим.