2011-08-15 33 views
-3

我想在文本字段中輸入浮點值,如'.35'或'35',但不是'0..3678'。我想限制輸入雙點。那是怎麼回事?如何輸入'。'首先,然後在texfield文本中編號?

- (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

我想限制雙點。 – iRam11

回答

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; 
0

只是檢查,如果字符是第一個字符,檢查它是否是一個點,如果是,通過0.作爲初始兩個字符在myString

相關問題