如何管理禁用/启用按钮

时间:2014-02-10 03:59:22

标签: ios objective-c xcode uibutton

在我的应用程序中,我有一个包含3个文本字段的视图。在他们全部填写之前,我希望我的按钮被禁用。在故事板中我启用了它,但是在我的ViewDidLoad中我添加了这个:

 if (amtYouOwe.text.length == 0 && personYouOweMoney.text.length == 0 && self.cellNum.text.length == 0)
{
    saveButton.enabled = NO;
}

即使填写了所有字段,我的按钮也被禁用。然后我尝试将其放入我的IBAction保存按钮。这次我得到了相反的结果。无论我的按钮是什么启用。即使所有文本字段都是空白的。我相信我的代码是正确的,我只是想找到一个完美的地方把它放进去....

所有的帮助都表示赞赏,提前谢谢。

4 个答案:

答案 0 :(得分:4)

编写一个函数来启用/禁用saveButton

-(void)enableDisableSave{
    if (amtYouOwe.text.length == 0 && personYouOweMoney.text.length == 0 && self.cellNum.text.length == 0){
        saveButton.enabled = NO;
    } else {
        saveButton.enabled = YES;
    }
}

编写textField的委托方法,将视图控制器作为委托分配给所有文本字段,编写以下委托方法并在其中调用该方法和bingo ..

- (void)textFieldDidEndEditing:(UITextField *)textField {
    [self enableDisableSave];
}

希望有所帮助。

答案 1 :(得分:0)

您应该在UITextField委托方法中添加按钮启用/禁用控件。每次编辑文本字段时,请检查所有文本字段的长度并更改按钮状态。

https://developer.apple.com/library/ios/documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

答案 2 :(得分:0)

如果您想要实时检查,请使用:

- (void)viewDidLoad {
    [super viewDidLoad];

    // ..
    // your code
    // ..

    [self addTextChangedEvent];
    [self toggleSaveButtonStatus];
}

- (void)addTextChangedEvent {

    [amtYouOwe addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
    [personYouOweMoney addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
    [self.cellNum addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}

- (void)textFieldDidChange:(UITextField *)textField {

    [self toggleSaveButtonStatus];
}
- (void)toggleSaveButtonStatus {

    int youOweLength = amtYouOwe.text.length;
    int personYouOweLength = personYouOweMoney.text.length;
    int cellNumLength = self.cellNum.text.length;
    saveButton.enabled = youOweLength > 0 && personYouOweLength > 0 && cellNumLength > 0;
}

答案 3 :(得分:0)

写入.pch文件

此宏不允许空格..

#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ] 

然后编写委托方法

- (void)textFieldDidEndEditing:(UITextField *)textField {
    [self enableDisableSave];
}

编写一个函数来启用/禁用saveButton

-(void)enableDisableSave{
    if ([allTrim(amtYouOwe.text) length] == 0 && [allTrim(personYouOweMoney.text) length] == 0 && [allTrim(self.cellNum.text) length] == 0){
        saveButton.enabled = NO;
    } else {
        saveButton.enabled = YES;
    }
}

快乐编码!!!