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

时间:2014-07-02 04:51:23

标签: ios uitextfield

我有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 个答案:

答案 0 :(得分:3)

改变这种情况

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

用这个

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