如何管理被禁用/启用的按钮
Posted
技术标签:
【中文标题】如何管理被禁用/启用的按钮【英文标题】:How to manage Buttons being disabled/enabled 【发布时间】:2014-02-10 03:59:21 【问题描述】:在我的应用程序中,我有一个包含 3 个文本字段的视图。在他们全部填写之前,我希望我的按钮被禁用。在情节提要中,我将其保持启用状态,但随后在 ViewDidLoad 中添加了以下内容:
if (amtYouOwe.text.length == 0 && personYouOweMoney.text.length == 0 && self.cellNum.text.length == 0)
saveButton.enabled = NO;
即使填写了所有字段,我的按钮也被禁用了..所以我尝试将它放在我的 IBAction 保存按钮中。这次我得到了相反的结果。无论我的按钮是什么启用。即使所有文本字段都是空白的。我相信我的代码是正确的,我只是想找到放置它的最佳位置....
感谢所有帮助,提前致谢。
【问题讨论】:
【参考方案1】:编写一个函数来启用/禁用保存按钮
-(void)enableDisableSave
if (amtYouOwe.text.length == 0 && personYouOweMoney.text.length == 0 && self.cellNum.text.length == 0)
saveButton.enabled = NO;
else
saveButton.enabled = YES;
编写一个 textField 的委托方法,将您的视图控制器分配为所有文本字段的委托,编写以下委托方法并在其中调用该方法,然后宾果游戏..
- (void)textFieldDidEndEditing:(UITextField *)textField
[self enableDisableSave];
【讨论】:
尝试在enableDisableSave
方法周围设置断点,并检查它是否进入if条件。还要检查您是否已正确分配委托。
啊,我看到代码在我完成编辑文本字段后可以正常工作,但我想要的是当视图加载时,按钮被禁用,直到输入文本字段
只需在viewDidLoad
上写一个声明为saveButton.enabled=NO
,这样它就可以工作了。此外,您需要更新我编辑的方法的代码以使其再次启用。
在我这样做之后,无论如何它仍然处于禁用状态【参考方案2】:
您应该在 UITextField 委托方法中添加按钮启用/禁用控件。每次编辑文本字段时,检查所有文本字段的长度并更改按钮状态。
https://developer.apple.com/library/ios/documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html
【讨论】:
【参考方案3】:如果你想实时检查,使用这个:
- (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;
【讨论】:
【参考方案4】:写入.pch文件
此宏不允许空格..
#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]
然后编写委托方法
- (void)textFieldDidEndEditing:(UITextField *)textField
[self enableDisableSave];
编写一个函数来启用/禁用保存按钮
-(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;
编码愉快!!!
【讨论】:
以上是关于如何管理被禁用/启用的按钮的主要内容,如果未能解决你的问题,请参考以下文章