我想限制允许用户输入的小数位数UITextField
,只接受(本地化)数字输入。
允许 4 个小数位的示例:
- 好:
42
,,,10.123
12345.2345
- 坏:
0.123456
,6.54321
现在,我在委托中使用NSNumberFormatter
's来确定它是否是合法的数值。numberFromString:
UITextField
textField:shouldChangeCharactersInRange:replacementString:
不幸的是,NSNumberFormatter
似乎忽略maximumFractionDigits
了numberFromString:
. 在使用我的测试中,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
如何最好地限制用户输入中的小数位数?