Как построить поле ввода чисел в стиле калькулятора в iOS? - PullRequest
5 голосов
/ 05 ноября 2010

Я уже знаю, как включить числовую клавиатуру и проверить ввод поля, чтобы убедиться, что он числовой.Я хочу знать, как настроить представление ввода, которое позволит моему пользователю вводить числовое значение справа налево, как калькулятор или банкомат.

Другими словами, я хочу, чтобы пользовательбыть в состоянии напечатать:

2 0 0 4 9

и отобразить это как $ 200.49 .

Затем, после ввода, мне также нужно получить или ввести значенияэтого входного представления как NSNumber или NSDecimalNumber, с правильным размещением десятичной дроби.

Например, у меня есть NSDecimalNumber, эквивалентный 17.50.Мне нужно иметь возможность передать этот номер в виде клавиатуры для редактирования, а затем вернуть отредактированное значение как объект числа .

Скажем, пользователь редактирует это значение;значение, которое они видят, будет

1 7 5 0

Затем они нажимают клавишу возврата.Тогда отображаемое число будет

1 7 5

Мне нужно вернуть это число как 1,75, а не 175 или 17,5.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 26 мая 2014

Я реализовал SATextField , который имеет эту встроенную функциональность. Он работает так же, как UITextField и имеет такой же внешний вид. Просто установите для свойства fixedDecimalPoint значение YES.

РЕДАКТИРОВАТЬ: Я создал новый проект, который содержит эту функцию: STAControls (в частности, используйте STAATMTextField - , он даже поддерживает . запись! ). Разница в том, что этот проект был реализован как законный подкласс UITextField, тогда как SATextField был просто контейнерным классом, в котором размещался экземпляр UITextField.

0 голосов
/ 05 ноября 2010

Для форматирования строки вы можете использовать NSNumberFormatter.Как то так:

float input = 20049.0f / 100.0;

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];    
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];

NSNumber *nsInput = [NSNumber numberWithFloat:input];
NSString* formattedOutput = [formatter stringFromNumber:nsInput];
NSLog(@"Output as currency: %@", formattedOutput);

[formatter release];
...