2012-12-20 29 views
3

寫我有一些問題,使一個按鈕,當你寫一個文本字段的東西。 如果TextField中沒有任何內容,但我無法在其中寫入內容時再次啓用該功能。啓用按鈕,如果我在文本字段

我有這樣的事情:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSUInteger textLength = [_Name.text length]; 
    [_doneButton setEnabled:(textLength > 0)]; 

} 

回答

2

試試這個

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
if([textField.text length]>0){ 
    [doneButton setEnabled:YES];   

} 
else{ 
[doneButton setEnabled:NO ; 
} 

希望這可以幫助你..

+0

這需要放在'shouldChangeCaractersInRange:(NSRange)'配售中'viewDidLoad'只會被調用一次在頁面加載時從來就不是再次。 – SnareChops

+0

@SKM,我試過你的代碼,它不起作用。我應該添加一些更多的調整來實現這個功能嗎? –

+0

@Santiago,你是怎麼做到的?請讓我知道,謝謝。 –

1

使用UITextField委託方法重新啓用按鈕。當您的textField字符發生更改時,將調用委託方法,並在此處啓用按鈕。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    _doneButton.enabled = YES; 
} 
+0

都能跟得上沒有改變任何東西,我仍然有同樣的問題 –

1

把線在文本框的委託方法:

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

它會工作,然後。每次在文本字段中輸入字符時都會調用此方法。但ViewDidLoad僅在加載viewcontroller時才被調用。

希望它能爲你工作。

9

組代表到的UITextField,創造如下在viewDidLoad中的文字變化的方法。

[self.textFieldTemp addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 

並添加如下方法。

- (void)textFieldDidChange:(UITextField *)textField { 
    if(textField == self.textFieldTemp) 
     self.buttonTemp.enabled = ([self.textFieldTemp.text length] > 0) ? YES : NO; } 
+1

這是最好的解決方案。其他答案在某些情況下不起作用,例如輸入1個字符時。但是這個指甲。 –

+0

在我看來,這是最好的解決方案。如果您有多個UITextFields,這些UITextField的狀態可以決定是否啓用該按鈕,例如用戶名和密碼對 – wuf810

0

這兩個功能將使根據你的文本框

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    _doneButton.enabled = YES; 
} 
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ 
if([textField.text length]>0){ 
    [doneButton setEnabled:YES];   
} 
else{ 
[doneButton setEnabled:NO ; 
} 
0

可以使用的UITextField的委託啓用和禁用這樣的按鈕上的文本禁用按鈕。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
{ 
if (textField.text.length!=0) 
{ 
yourButton.enabled = YES; 
} 
else 
{ 
yourButton.enabled = NO; 
} 
} 
0

我在所有使用未使用委託的方法。我創建了控制器類此方法:

- (IBAction)textFieldChanged:(id)sender 
{ 
    self.doneButton.enabled = ([self.Name.text length] > 0) ? YES : NO; 
} 

然後,在界面生成器,我設置的文本字段「編輯而改變」的行動爲目標的新方法。然後,類似於@Paramasivan Samuttiram,我在viewDidLoad:中增加了一個額外的電話。

[self textFieldChanged:self.Name]; 

該部分允許按鈕最初處於正確的狀態。

相關問題