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

标签 iphone ios objective-c uitextfield text-formatting

我在 iPhone 应用程序中有一个文本字段,我想实现类似于 atms 输入的输入,您所要做的就是输入数字(不需要输入小数点字符)。我希望能够只为这个文本字段使用数字键盘。例如,文本字段最初显示:

0.00

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

12.34

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

最佳答案

关于格式化,我认为您会对 this other SO post 中的详细信息感到非常满意描述如何使用 NSNumberFormatter显示前导和尾随零。从该帖子中提取和调整:

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

为了将 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];

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

关于iphone - 像 atm 机器输入一样实现文本字段输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5042901/

相关文章:

iphone - 消除过渡期间实现 UIScrollView 相册时出现的故障

ios - 如何处理来自 iOS 设置的推送通知允许

iphone - iOS 在多任务栏和正在播放锁屏中显示歌曲元数据

iphone - 无效的二进制文件 - iPhone 应用程序提交

iphone - Mobile Safari(HTML5 Canvas )上绘图/素描 Web 应用程序的 UI 缓慢

ios - 如何在 ARC iOS 应用程序中使用非 ARC 框架

删除 iPhone 后 iOS 推送 token 仍然有效

ios - iOS 水平居中约束

objective-c - 在通过谓词获取 NSArray 后,如何获取其父 NSMutableArray 中的 NSArray 索引

objective-c - 自动生成的 "ModuleName-Swift.h" header 不包括 Swift 类