2011-05-01 41 views
0

我一直在爲此工作數日,現在我的文本字段出現了一些嗡嗡的事情...而且它已經到了需要退後一步的地步,希望有一雙新鮮眼睛的人可以揭示這種情況。UITextField在格式化NSString時出現NSString長度問題

基本上我正在做的是將20個字符的字符串格式化爲5個字符串,因爲用戶在每個第5個字符之後輸入一個連字符彈出到字符串中,這很好用。

我有一個提交按鈕,在輸入第20個字符之前是不可行的,這也適用,但是它在哪裏變得很瘋狂!如果你刪除了一個字符的提交按鈕仍然工作..然後你刪除了一個字符,它不起作用...我不知道如果我的if語句條件不工作,我應該指定== 23個字符,你必須按下其中一個鍵24次才能進入該語句。這沒有任何邏輯意義。

無論如何,如果你能幫助我的第一個問題,那將是偉大的,那麼如果你對第二個問題有任何想法,那就太棒了。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSString *separator = @"-"; 
    int seperatorInterval = 5; //how many chars between each hyphen 
    NSString *originalString = [regTextField.text stringByReplacingOccurrencesOfString:separator withString:@""]; 


    if (textField.text.length == 23 && range.length == 0){ 
     return NO; // return NO to not change text 
    }  
    if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) { 

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

     if (![lastChar isEqualToString:separator] && modulus == 0) { 
       regTextField.text = [regTextField.text stringByAppendingString:separator]; 
     } 
    } 
    [self validateTextFields]; 
    return YES; //Keep accepting input from the user 
} 

//Validating text field to see if Submit button can be pressed or not 
-(IBAction) validateTextFields { 
    NSString *intString = [NSString stringWithFormat:@"%d", regTextField.text.length]; 
    NSLog(@"Starting %@", intString); 
    if (regTextField.text.length < 22){ 
     [submitButton setEnabled:NO]; //enables submitButton 
    } 
    else { 
     regTextField.text = [regTextField.text substringToIndex:22]; 
     [submitButton setEnabled:YES]; //disables submitButton 
    } 
    intString = [NSString stringWithFormat:@"%d", regTextField.text.length]; 
    NSLog(@"Done %@", intString); 
} 

回答

0

您需要的if語句

if (regTextField.text.length <= 22){ 

添加=登錄本或者只是改變數到23無論哪種方式,它應該工作

if (regTextField.text.length < 23){