我想限制允许用户输入的小数位数UITextField,只接受(本地化)数字输入。
允许 4 个小数位的示例:
- 好:
42,,,10.12312345.2345 - 坏:
0.123456,6.54321
现在,我在委托中使用NSNumberFormatter's来确定它是否是合法的数值。numberFromString:UITextFieldtextField: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
如何最好地限制用户输入中的小数位数?