2013-03-27 2 views
0

Я пытаюсь создать базовый калькулятор, и у меня возникли проблемы с форматированием номера на дисплее во время ввода. Я использую NSNumberFormatter, чтобы поместить запятую после каждых трех цифр, чтобы «99999» мог выглядеть примерно как «99,999».NSNumberFormatter, не позволяющий более 4-х цифр в UITextField

Проблема в том, что во время ввода не будет отображаться более 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

ответ

0

Эти методы могут пригодиться:

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

Вы можете установить максимальное количество знаков после запятой до 6, или все, что нужно:

[numberFormatter setMaximumFractionDigits: 6];