2013-03-27 26 views
0

我试图构建一个基本的计算器,并且在输入期间无法在显示器上格式化数字。我使用NSNumberFormatter在每3个数字后面加一个逗号,以便“99999”看起来像“99,999”。NSNumberFormatter在UITextField中不允许超过4位数

问题是在输入过程中它不会显示超过4位数......它基本上重置为1位数。这里是我的输入数字代码:

- (IBAction)digitPressed: (UIButton *)sender 
{ 
    NSString *digit = sender.titleLabel.text; 

     display.text = [display.text stringByAppendingString:digit]; 

     NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
     [numberFormatter setGroupingSeparator:@","]; 
     [numberFormatter setGroupingSize:3]; 
     [numberFormatter setUsesGroupingSeparator:YES]; 
     [numberFormatter setDecimalSeparator:@"."]; 
     [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
     NSString *theString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:[[display text] doubleValue]]]; 
     display.text = theString; 
} 
+0

当用户尝试在小数点后输入一个零时,您的代码是否可以处理?为什么你会忽略本地化,并以这种方式设置小数点分隔符和分组分隔符? – Sulthan 2013-03-27 11:35:52

回答

0

这些方法可能会派上用场:

- (void)setMaximumIntegerDigits:(NSUInteger)number; 
- (void)setMaximumFractionDigits:(NSUInteger)number; 

你可以设置最大的小数位数到6,或任何你需要:

[numberFormatter setMaximumFractionDigits: 6];