即时更改 iOS 文本字段以显示货币

Posted

技术标签:

【中文标题】即时更改 iOS 文本字段以显示货币【英文标题】:Changing iOS textfield on the fly to show currency 【发布时间】:2014-07-02 04:51:23 【问题描述】:

我有一个需要显示一些货币数据的UITextField。这个想法是它应该始终显示带有 $ 符号的格式化数字。

这是我目前使用的代码:

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string 



    [self performSelector:@selector(timeToSearchForStuff:) withObject:textField afterDelay:0.3];


    return YES;


- (void)timeToSearchForStuff:(UITextField*)textField

    if (textField.text.length == 0) 
        textField.text = @"$";
    

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
        [numberFormatter setMaximumFractionDigits:0];
        [numberFormatter setMinimumFractionDigits:0];

    NSLocale *priceLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_AU"]  ;

    [numberFormatter setLocale:priceLocale];

    long long inuy =[[numberFormatter numberFromString:textField.text]integerValue];

    NSLog(@"starteo");

    NSLog(@"inuy :: %lld", inuy);

    NSString *formattedString =[numberFormatter stringFromNumber:[NSNumber numberWithLong:inuy]];

    NSLog(@"chupacabra3 :: %@", formattedString);

    self.textField.text = formattedString;


这在我输入超过 4 位数字之前都可以正常工作,如果我输入第 5 位数字,则文本字段会变为零。

如果我只是记录该值,它会执行正常,但如果我将文本设置在第 5 位,它会再次变为零。

需要一些帮助来解决这里出了什么问题。指引我正确的方向。

谢谢。

【问题讨论】:

【参考方案1】:

改变这个条件

if (textField.text.length == 0) 
    textField.text = @"$";

有了这个

if (textField.text.length == 0) 
    textField.text = @"$";
 else 
    [textField setText:[textField.text stringByReplacingOccurrencesOfString:@"," withString:@""]];

【讨论】:

以上是关于即时更改 iOS 文本字段以显示货币的主要内容,如果未能解决你的问题,请参考以下文章

如何更改xpages中dojo货币文本框的特征?

iOS 货币输入栏

如何使用 Swift 在文本字段(从右到左)上输入货币格式?

如何使用 Swift 在文本字段(从右到左)上输入货币格式?

AngularJS - 如何在我输入时在文本框上应用货币过滤器?

文本更改时将数字转换为货币格式