实现像atm机器输入一样的文本字段输入

MBU*_*MBU 5 iphone text-formatting objective-c uitextfield ios

我在iphone应用程序中有一个文本字段,我想实现类似于atms输入的输入,你只需要输入数字(不需要输入十进制字符).我希望能够在此文本字段中使用数字键盘.例如,文本字段最初显示:

0.00
Run Code Online (Sandbox Code Playgroud)

如果用户输入序列1234,则文本字段将如下所示:

12.34
Run Code Online (Sandbox Code Playgroud)

如果用户按下删除按钮,它也必须更新.

小智 6

对于格式化,我认为你会对这篇描述如何使用NSNumberFormatter显示前导和尾随零的SO帖子中的细节感到非常满意.从那篇文章中拉出并调整:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setFormat:@"##0.00"];

NSNumber* input; // Hook in your input
NSString* output = [NSString stringWithFormat:@"%@", [formatter stringFromNumber:input]]; // Hook to your text field
Run Code Online (Sandbox Code Playgroud)

为了将1234的输入转换为12.34(并且可能是12的输入为0.12),请考虑您始终将输入的两位小数移位.

// int storedInput has already been set to 1234
int input = 5; // Next button that was pressed
storedInput = storedInput * 10 + input; // 1234 * 10 + 5 = 12345
float displayedValue = input * .01;  // 123.45
NSNumber* output = [NSNumber numberWithFloat:displayedValue];
Run Code Online (Sandbox Code Playgroud)

这两个代码片段应该让您了解如何在程序中实现这些概念.至于删除...只需将storedInput设置为0.每次键盘输入新内容以刷新值时,您都可以调用这些代码.