Une solution plus élégante se trouve également être le plus simple.
Vous n'avez pas besoin d'une touche séparateur de décimales
Pourquoi? Parce que vous pouvez simplement déduire à partir de l'entrée de l'utilisateur. Par exemple, aux états-unis les paramètres régionaux lorsque vous entrez dans $1.23, vous commencez par entrer les numéros 1-2-3 (dans cet ordre). Dans le système, où chaque personnage est saisi, ce serait reconnu comme:
- utilisateur entre 1: $0.01
- l'utilisateur entre les 2: $0.12
- utilisateur entre 3: $1.23
Remarquez comment nous avons déduit le séparateur décimal basée sur la saisie de l'utilisateur. Maintenant, si l'utilisateur veut entrer dans $1.00, ils seraient tout simplement d'entrer les numéros 1-0-0.
Pour que votre code pour gérer les devises de différents paramètres régionaux, vous avez besoin pour obtenir le maximum de la fraction chiffres de la monnaie. Cela peut être fait avec l'extrait de code suivant:
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
int currencyScale = [currencyFormatter maximumFractionDigits];
Par exemple, le yen Japonais a un maximum fraction chiffres de 0. Donc, quand il s'agit de yens d'entrée, il n'y a pas de séparateur décimal et donc même pas besoin de s'inquiéter à propos des fractions.
Cette approche du problème permet d'utiliser le stock d'entrée numérique clavier Apple sans les maux de tête de la coutume, de claviers, de la regex de validation, etc.