2011-09-09 76 views
0

我有一個uitextfield,我正在驗證文本字段,驗證正在爲每3個數字添加「 - 」(hypen)。它工作正常iphone中的uitextfieldvalidation

和代碼如下 但現在我想改變驗證方式,以限制字符數爲10,並添加「 - 」後第3和第7位動態進入和編輯 [例如:123-456-7890]它應該做的事,同時也編輯...

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

NSString *separator = @"-"; 
int seperatorInterval = 3; 
NSString *originalString = [textField.text stringByReplacingOccurrencesOfString:separator withString:@""]; 

if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) { 

    NSString *lastChar = [textField.text substringFromIndex:[textField.text length] - 1]; 
    int modulus = [originalString length] % seperatorInterval; 

    if (![lastChar isEqualToString:separator] && modulus == 0) { 

     textField.text = [textField.text stringByAppendingString:separator]; 
    } 
} 

return YES; 

} ,但現在我想改變驗證以這樣的方式來限制字符數到10在輸入和編輯時動態地在第3和第7位後添加「 - 」
[例:123-456-7890] 它應該在編輯時完成...

回答

0

您只需將此代碼塊添加到您在此顯示的函數的底部。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 


    if ([textField isEqual:textField] ) { 
    NSUInteger newLength = [textField.text length] + [string length] - range.length; 
    return (newLength > 10) ? NO : YES; //the 10 here represents the MAX allowed characters in the text field. So you may want to increase it to 12 if you are going to have 2 "-"s 

    } 
} 
+0

多數民衆贊成在罰款,但增加「 - 」後第三和第七名,但現在的「 - 」增加在每第三名,你可以幫助我如何實現那一個。 – user564963