【问题标题】:How do I build a calculator-style number input field in iOS?如何在 iOS 中构建计算器风格的数字输入字段?
【发布时间】:2011-05-05 08:11:48
【问题描述】:

我已经知道如何启用数字键盘并验证字段输入以确保它是数字的。我想知道的是如何设置一个输入视图,让我的用户从右到左输入一个数值,就像计算器或 ATM 机一样。

换句话说,我希望用户能够输入:

2 0 0 4 9

并将其显示为 $200.49

然后,一旦输入,我还需要将值作为 NSNumber 或 NSDecimalNumber 输入或输出此输入视图,并具有正确的小数位置。

例如,我有一个等于 17.50 的 NSDecimalNumber。我需要能够将此数字传递到键盘视图中进行编辑,然后将编辑后的值作为数字对象取回。

假设用户编辑了该值;他们看到的价值是

1 7 5 0

然后他们按下退格键。显示的数字将是

1 7 5

我需要将该数字恢复为 1.75,而不是 175 或 17.5。

有什么建议吗?

【问题讨论】:

  • 我写了一个KeyPad,这可以让你坚持一个代表。它应该很容易用于 ATM 接口。

标签: iphone uiview ios uitextfield


【解决方案1】:

我已经实现了SATextField,它内置了这个功能。它就像 UITextField 一样工作并且具有相同的外观。只需将fixedDecimalPoint 属性设置为YES

编辑:我创建了一个包含此功能的新项目:STAControls(具体来说,使用STAATMTextField -- 它甚至支持. 条目! )。不同之处在于,这个项目是作为UITextField 的合法子类实现的,而SATextField 只是一个包含UITextField 实例的容器类。

【讨论】:

    【解决方案2】:

    要格式化字符串,您可以使用 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];
    

    【讨论】:

    • 我用 NSNumberFormatter 玩了一些货币,但我遇到了一些问题,如果我在编辑后尝试使用 numberFromString 将字符串解析回浮点数,它总是会返回零(显然是因为缺少货币符号?)。这是将字符串值转换回数字的最佳方法吗?
    • 嗯。从字符串转换为数字时,您是否尝试过 [formatter setNumberStyle:NSNumberFormatterDecimalStyle]?
    猜你喜欢
    • 2021-03-04
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2012-06-07
    相关资源
    最近更新 更多