使用textField

时间:2015-06-08 20:49:02

标签: ios objective-c

我有textField让用户输入资金。我不想只支持美元符号$。我希望它支持所有货币。但问题是,一些美元符号在金钱之后(例如德语:27.99€)。

因此,即使在用户输入金额之前,货币符号也必须出现。使用美元符号,这很简单,只需要做$ .但是对于其他人,比如€,我不知道我怎么做。

我的问题是,如何显示货币符号以使其符合当前货币?

此外,如果用户更改了货币,保存的金额是否也会自动更改,还是我必须手动更改?

更新

我尝试了以下内容:

NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setLocale:[NSLocale currentLocale]];
[currencyFormatter setMaximumFractionDigits:2];
[currencyFormatter setMinimumFractionDigits:2];
[currencyFormatter setAlwaysShowsDecimalSeparator:YES];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

如何将其显示在textField

1 个答案:

答案 0 :(得分:1)

Apple非常支持本地化。

您想要使用区域设置和NSNumberFormatters的组合。如果您创建一个数字格式化程序,将其配置为货币并将语言环境设置为德国,它应正确显示货币值(末尾是货币符号,小数点分隔符是逗号等)

此代码:

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
NSLocale *theGermanLocale = [NSLocale localeWithLocaleIdentifier: @"de_DE"];
currencyFormatter.locale = theGermanLocale;
currencyFormatter.numberStyle = NSNumberFormatterCurrencyStyle;

double value = 12.34;
NSString *germanCurrencyString = [currencyFormatter stringFromNumber: @(value)];
NSLog(@"%f in German currency is \"%@\"", value, germanCurrencyString)

显示:

  

德国12.34货币为“12,34€”

无需设置位数或需要小数点分隔符。将格式化程序设置为NSNumberFormatterCurrencyStyle可以正确配置数字格式化程序中指定区域设置的所有设置。这就是重点。