【问题标题】:Formatting Currency Correctly for two UITextFields为两个 UITextFields 正确格式化货币
【发布时间】:2013-08-15 04:46:21
【问题描述】:

我的应用中有两个 UITextField,应用与货币有关。我正在尝试用 $ ​​开头和应该的小数点正确格式化它。就像我说的。我一直找不到我的问题的菜鸟答案。

【问题讨论】:

    标签: ios objective-c uitextfield currency nsnumberformatter


    【解决方案1】:

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

    【讨论】:

    • 我不知道,你想在哪里看到带货币符号的格式化数字?
    • 在我的 uitextfields 中。你在哪里输入账单总额。输入账单总额后,我希望您输入的数字格式正确。
    • NSNumber newOutput = [formatter numberFromString:textFieldinputVariable]; [textfield setText:[newOutput stringFromNumber]];//我还没有测试过,但这是它的工作原理。
    • 我很确定我做错了。我是一个新的 ios 开发人员,所以有时会很艰难。我住的地方已经很晚了,所以我要去睡觉了。如果你不介意,你可以在 antomir0121 的 Skype 上加我吗,你可以帮我解决这个问题,以便我可以提交这个应用程序吗?谢谢。请回复,这样我就可以睡觉了。
    • 好吧,这似乎可行,但我不能说,因为无论你把 numberField 放在哪里,我都会收到一个错误,它说在“TipViewController”类型的对象上找不到属性 numberField。
    【解决方案2】:
    UILabel *price; 
    NSString *dollarSign = "$";//Just use whatever currency symbol you need
    
    
    price.text = [dollarSign stringByAppendingString:[NSString stringWithFormat:@"%.2f", priceVariable]];
    

    这将以 $xxx.xx 格式打印

    【讨论】:

    • 如果有人使用其他货币打开应用程序,他们仍然会看到 $,这不是特定于区域设置的。
    • @Antomir 你使用它时发生了什么?你有没有收到错误或任何东西。我刚刚从我当前使用的代码中复制了它,它正在工作。
    • 我没有出错。它只是没有工作。我想你错了。我的标签很好。想要的是在我的 uitextfields 中。你在哪里输入账单总额。输入账单总额后,我希望您输入的数字格式正确。
    【解决方案3】:

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

    https://github.com/TomSwift/TSCurrencyTextField

    它将货币金额格式化为用户键入的 ATM 样式。用户被限制输入除数字以外的任何内容。该控件在内部使用 NSNumberFormatter(货币样式!),您可以根据需要对其进行调整,以调整货币符号 ($)、小数位等。

    【讨论】:

      猜你喜欢
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2012-05-31
      相关资源
      最近更新 更多