如果我在TextField中写入,启用button

在TextField中写入内容时,启用button时遇到一些问题。 如果TextField中没有任何内容,我可以禁用它,但是当您在其中写入内容时,无法再次启用它。

我有这样的东西:

- (void)viewDidLoad { [super viewDidLoad]; NSUInteger textLength = [_Name.text length]; [_doneButton setEnabled:(textLength > 0)]; } 

尝试这个

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

希望这个五月能帮助你..

将代理设置为UITextField,并在ViewDidLoad中创build一个用于文本更改的方法,如下所示。

 [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; } 

使用UITextField委托方法再次启用您的button。 当你的textField字符被改变时,委托方法将被调用,在这里启用你的button。

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

将行放在textfield委托方法中:

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

它会工作。 每当您在文本字段中input一个字符时,都会调用此方法。 但是ViewDidLoad只有在viewcontroller被加载时才被调用。

希望它能为你工作。

这两个函数将根据文本字段中的文本启用和禁用button

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

你可以使用UITextField的代理来启用和禁用这个button。

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

我使用的方法根本不使用代表。 我在控制器类中创build了这个方法:

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

然后,在Interface Builder中,我将文本字段“Editing Changed”设置为定位新方法。 然后,类似于@Paramasivan Samuttiram,我在viewDidLoad:添加了一个额外的调用viewDidLoad:

 [self textFieldChanged:self.Name]; 

该部分允许button最初处于正确的状态。