【发布时间】:2013-08-15 04:46:21
【问题描述】:
我的应用中有两个 UITextField,应用与货币有关。我正在尝试用 $ 开头和应该的小数点正确格式化它。就像我说的。我一直找不到我的问题的菜鸟答案。
【问题讨论】:
标签: ios objective-c uitextfield currency nsnumberformatter
我的应用中有两个 UITextField,应用与货币有关。我正在尝试用 $ 开头和应该的小数点正确格式化它。就像我说的。我一直找不到我的问题的菜鸟答案。
【问题讨论】:
标签: ios objective-c uitextfield currency nsnumberformatter
这里发生的事情是您添加了一个观察者,告诉我们用户何时完成编辑。一旦发生这种情况,我们的formatCurrency 方法就会更新文本字段的外观。一旦数字字段退出其第一响应者状态,更改将完全生效。
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(formatCurrency)
name:UITextFieldTextDidEndEditingNotification
object:self.numberField];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.numberField resignFirstResponder];
}
-(void)formatCurrency {
NSString *currentValue = self.numberField.text;
long long cur = [currentValue longLongValue];
NSNumber *curNum = @(cur);
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
self.numberField.text = [NSNumberFormatter localizedStringFromNumber:curNum
numberStyle:NSNumberFormatterCurrencyStyle];
}
【讨论】:
UILabel *price;
NSString *dollarSign = "$";//Just use whatever currency symbol you need
price.text = [dollarSign stringByAppendingString:[NSString stringWithFormat:@"%.2f", priceVariable]];
这将以 $xxx.xx 格式打印
【讨论】:
我写了一个UITextField 子类来处理货币格式,在这里可以找到:
https://github.com/TomSwift/TSCurrencyTextField
它将货币金额格式化为用户键入的 ATM 样式。用户被限制输入除数字以外的任何内容。该控件在内部使用 NSNumberFormatter(货币样式!),您可以根据需要对其进行调整,以调整货币符号 ($)、小数位等。
【讨论】: