2012-05-23 68 views
0

嗨,我已經創建了一個UITextField,我想要限制它只有3個字母。如果沒有啓用按鈕,則禁用一個按鈕。有誰知道如何做到這一點?iOS的UiTextField限制輸入和鍵盤關閉

我已經給它一個去,但它不是真的工作正常,如果我鍵入3個字母它顯示3但不會關閉keyboard.i不禁感覺這是一個更好的方式來做到這一點。

繼承人我做了什麼

- (void)hideKeyboardAction { 

    NSLog(@"Hide"); 

    if([self.playerName length] >= 4){ 
     [self.nameTextField resignFirstResponder]; 
    } else if([self.playerName length] < 3) { 
     [self.addToScores setEnabled:FALSE]; 
    } 
} 

- (IBAction)hideKeyboard:(id)sender { 

    [self hideKeyboardAction]; 
} 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    self.playerName = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

    if([self.playerName length] <4){ 
     [self hideKeyboardAction]; 
    } 

    if([self.playerName length] > 3){ 
     [self.addToScores setEnabled:FALSE]; 
    } 

    BOOL shouldStayOpen = !([self.playerName length] > 3); 
    return shouldStayOpen; 
} 
+0

如果用戶想要更改字符,鍵盤必須彈出,然後只有他可以更改.... –

回答

0

你不應該替換文本框的文本:shouldChangeCharactersInRange:replacementString :.您應該檢查textField中文本的長度,比較範圍的長度和replacementString的長度,並決定是否替換(返回YES/NO)。您也可以根據更換後文本的計算長度來啓用/禁用此方法中的按鈕。

在我看來,沒有必要隱藏鍵盤。