我想在文本字段中输入浮点值,如'.35'或'35',但不是'0..3678'。我想限制输入双点。怎么样?
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:
(NSRange)range replacementString:(NSString *)string{
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber* myNumber;
NSString* myString = [textField.text stringByReplacingCharactersInRange:range withString:string];
range = NSMakeRange(0, [myString length]);
[numberFormatter getObjectValue:&myNumber forString:myString range:&range error:nil];
if (([myString length] > 0) && (myNumber== nil || range.length < [myString length])) {
return NO;
}else {
return YES;
}
}
我使用上面的代码输入数值但它不能输入第一个点/点然后输入数字。上述功能有什么错误?
答案 0 :(得分:2)
int dots = 0;
for (int i = 0; i<[string length]; i++) {
char test = [string characterAtIndex:i];
if (test == '.') dots++;
}
if (dots > 1) {
return NO;
}
return YES;
答案 1 :(得分:0)
只检查字符是否是第一个字符,检查它是否为点,如果是,请将0.
作为myString
中的最初两个字符传递。