3

当您在 TextField 中编写内容时,我在启用按钮时遇到了一些问题。如果 TextField 中没有任何内容,我将其禁用,但当您在其中写入内容时,我无法再次启用它。

我有这样的事情:

- (void)viewDidLoad {
    [super viewDidLoad];

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

}
4

7 回答 7

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; }
于 2012-12-20T05:54:31.720 回答
2

尝试这个

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

}
else{
 [doneButton setEnabled:NO ;
}

希望这可能对您有所帮助..

于 2012-12-20T05:51:56.203 回答
1

将这些行放在文本字段委托方法中:

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

那它会起作用的。每次在文本字段中输入字符时都会调用此方法。但是 ViewDidLoad 仅在加载视图控制器时调用。

希望它对你有用。

于 2012-12-20T05:54:09.840 回答
1

使用UITextField委托方法再次启用您的按钮。当你的textField角色改变时,委托方法将被调用,在这里启用你的按钮。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
     _doneButton.enabled = YES;
}
于 2012-12-20T05:51:35.390 回答
0

您可以使用 UITextField 的委托来启用和禁用这样的按钮。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
{
if (textField.text.length!=0)
{
yourButton.enabled = YES;
}
else
{
yourButton.enabled = NO;
}
}
于 2012-12-20T06:11:08.633 回答
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 ;
}
于 2012-12-20T05:56:46.617 回答
0

我使用的方法根本没有使用委托。我在控制器类中创建了这个方法:

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

然后,在 Interface Builder 中,我将文本字段“Editing Changed”操作设置为针对新方法。然后,类似于@Paramasivan Samuttiram,我在viewDidLoad:.

[self textFieldChanged:self.Name];

该部分允许按钮最初处于正确状态。

于 2013-11-15T22:27:41.340 回答