正确格式化两个UITextField的货币

时间:2013-08-15 04:46:21

标签: ios objective-c uitextfield currency nsnumberformatter

我的应用程序中有两个UITextFields,该应用程序与货币有关。我试图使用开头的$和它应该的小数正确格式化。就像我说的。我一直无法找到问题的菜鸟回答。

3 个答案:

答案 0 :(得分:0)

这里发生的事情是你正在添加一个观察者,告诉我们用户何时完成编辑。一旦发生这种情况,我们的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];
}

答案 1 :(得分:0)

UILabel *price; 
NSString *dollarSign = "$";//Just use whatever currency symbol you need


price.text = [dollarSign stringByAppendingString:[NSString stringWithFormat:@"%.2f", priceVariable]];

这将以$ xxx.xx

格式打印

答案 2 :(得分:0)

我编写了一个UITextField子类来处理货币格式,可在此处找到:

https://github.com/TomSwift/TSCurrencyTextField

它将用户类型的货币金额格式化为ATM风格。限制用户输入除数字之外的任何内容。控件在内部使用NSNumberFormatter(货币风格!),你可以根据需要调整,调整货币符号($),小数位等。