当textfields为空时禁用按钮

Ayu*_*yub 5 objective-c nsstring uitextfield uitextfielddelegate

嗨,我是一个编程的初学者,已经坚持这个任务多年,似乎无处可去.

基本上我有几个文本字段,当用户按下按钮时,它会在不同的页面上生成输入信息.我想要禁用该按钮,直到所有文本字段都填充信息.

到目前为止我有这个:

    - (void)textFieldDidEndEditing:(UITextField *)textField
{
    // make sure all fields are have something in them

if ((textfbookauthor.text.length  > 0)&& (textfbookedition.text.length > 0)&& (textfbookplace.text.length > 0)&& (textfbookpublisher.text.length > 0) && (textfbookpublisher.text.length > 0) && (textfbooktitle.text.length > 0)  && (textfbookyear.text.length > 0)) {
        self.submitButton.enabled = YES;
    }
    else {
        self.submitButton.enabled = NO;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是'submitButton'出现错误,需要取代它的位置?我试图把我的按钮'bookbutton'放在其中,但它不起作用.

这是我的'生成'按钮的功能

    -(IBAction)bookbutton:(id)sender;
{
    NSString* combinedString = [NSString stringWithFormat:
                                @"%@ %@ %@.%@.%@:%@.", 
                                textfbookauthor.text,
                                textfbookyear.text,
                                textfbooktitle.text,
                                textfbookedition.text,
                                textfbookplace.text,
                                textfbookpublisher.text];
    BookGenerate*bookg = [[BookGenerate alloc] init];
    bookg.message = combinedString;
    bookg.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:bookg animated:YES];
    [BookGenerate release];
}
Run Code Online (Sandbox Code Playgroud)

如果有人知道我如何使它工作或我需要添加,请帮助.

提前致谢

Jon*_*asG 25

为每个UITextField创建一个Outlet并在.h中创建一个IBAction:

IBOutlet UITextField *textField1;
IBOutlet UITextField *textField2;
IBOutlet UITextField *textField3;
IBOutlet UIButton *button

- (IBAction)editingChanged;
Run Code Online (Sandbox Code Playgroud)

连接所有插座并使用editingChanged将IBAction连接到每个文本字段:

 - (IBAction)editingChanged {
    if ([textfield1.text length] != 0 && [textfield2.text length] != 0 && [textfield3.text length] != 0) {
         [button setEnabled:YES];
     }
     else {
         [button setEnabled:NO];
     }
 }
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以使用[textfield.text isEqualToString:@""]!在其前面放置(!表示"not")以识别空textField,并说"如果textField为空,请执行..."

和:

- (void)viewDidLoad {
    [super viewDidLoad];
    [button setEnabled:NO];
}
Run Code Online (Sandbox Code Playgroud)


Rap*_*ira 6

如果您有一个按钮,并且只有在textfield或textview中有文本时才启用它,请实现以下方法

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{    
    if (textView.text.length > 1 || (text.length > 0 && ![text isEqualToString:@""]))
    {
        self.button.enabled = YES;
    }
    else
    {
        self.button.enabled = NO;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)