さて、現地通貨にフォーマットされたラベルを更新する数値フィールド (0 ~ 9 の値を持つボタン) を持つアプリがあります。ラベルはユーザーの小数点を自動的に配置するため、形式は 0.00 です。iPhone はユーロなどの他のほとんどの通貨を 0,00 としてフォーマットするため、これは問題です。
地域の通貨形式を検出する方法はありますか ([設定] > [国際] > [地域形式])?
次に、それに応じて if ステートメントを作成します。
現在のテンキー コード:
NSString *digit = sender.currentTitle;
numberField.text = [numberField.text stringByAppendingString:digit];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setGroupingSeparator:@""];
[numberFormatter setMaximumIntegerDigits:4];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setMaximumFractionDigits:2];
numberField.text = [numberField.text stringByReplacingOccurrencesOfString:@"." withString:@""];
NSDecimalNumber *currency = [[NSDecimalNumber decimalNumberWithString:numberField.text] decimalNumberByDividingBy: [NSDecimalNumber decimalNumberWithString:@"100"]];
numberField.text = [numberFormatter stringFromNumber:currency];
11 行目に小数点が挿入されていることがわかります。コンマに変更すると、0,00 形式が正しく機能します。
そして変換:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *string = [f stringFromNumber:[NSNumber numberWithFloat:[numberField.text floatValue]]];
numberField.text=string;