У меня есть экземпляр NSTextField
, например someTextField
, для которого я буду использовать числовой форматер, чтобы ограничить ввод только цифрами.
Проблема связана с локализацией в сочетании с конкретными используемыми раскладками клавиатуры.
Я хотел бы разрешить, скажем, американским и европейским пользователям вводить свои локализованные десятичные разделители. Как вы все знаете, в США это будет .
, а для большей части Европы - ,
(и аналогично разделителю тысяч и т. Д., Но давайте пока отложим это).
Итак, я написал следующее задание:
[numberFormatter setLocale:[NSLocale currentLocale]];
для экземпляра NSNumberFormatter
.
Проблемы возникают, когда пользователь, у которого ,
установлен в качестве десятичного разделителя И включена раскладка клавиатуры США (довольно распространенная в Европе), нажимает клавишу десятичного разделителя на цифровой клавиатуре. При раскладке американской клавиатуры это даст ему .
в качестве десятичного разделителя, но в то же время он будет проигнорирован в someTextField
из-за локализованных настроек для всей системы. Таким образом, если вы хотите набрать 1/2
только с цифровой клавиатуры, вы наберете 0.5
(раскладка клавиатуры США) в текстовом поле, и система будет читать ее как 0
, поскольку она распознает только ,
в качестве десятичного разделителя. Так работает программа в настоящее время, и я хотел бы улучшить ее в этом отношении.
Я бы хотел, чтобы пользователь мог ввести .
в someTextField
и чтобы система распознала его как десятичный разделитель, как это было бы ,
. Такое поведение можно увидеть в собственном приложении Apple Calculator. Если вы наберете .
на цифровой клавиатуре, он сразу появится на экране как ,
(для всех условий, как описано ранее).
Вопрос: могу ли я достичь этого, используя экземпляр NSNumberFormatter
? Если нет, возможно ли установить на лету преобразование вывода десятичной разделительной клавиши с цифровой клавиатуры в общесистемный набор десятичных разделителей? Или, может быть, у вас есть другие предложения?
Спасибо.