【发布时间】:2013-08-19 21:33:03
【问题描述】:
我想限制允许用户输入 UITextField 的小数位数,该 UITextField 只接受(本地化)数字输入。
允许 4 个小数位的示例:
- 好:
42,10.123,12345.2345 - 错误:
0.123456,6.54321
现在,我在UITextField 委托的textField:shouldChangeCharactersInRange:replacementString: 中使用NSNumberFormatter 的numberFromString: 来确定它是否是合法的数值。
不幸的是,NSNumberFormatter 似乎忽略了numberFromString: 中的maximumFractionDigits。在使用getObjectValue:forString:range:error: 的测试中,我遇到了同样的问题,之后range 也是字符串的全长(除非我开始输入字母;然后range 仅表示字符串中带数字的部分):
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.maximumFractionDigits = 3;
formatter.roundingMode = NSNumberFormatterRoundHalfUp;
formatter.generatesDecimalNumbers = YES;
NSDecimalNumber* n = (NSDecimalNumber*)[formatter numberFromString:@"10.12345"];
NSLog(@"Number: %@", n.description); // expected: 10.123, but is: 10.12345
如何最好地限制用户输入中的小数位数?
【问题讨论】:
标签: objective-c uikit nsnumberformatter