如何输入'。'首先,然后在textfield的文本中编号?

时间:2011-08-15 11:59:47

标签: iphone uitextfield

我想在文本字段中输入浮点值,如'.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;
    }
}

我使用上面的代码输入数值但它不能输入第一个点/点然后输入数字。上述功能有什么错误?

2 个答案:

答案 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中的最初两个字符传递。