当用户更改值时启用完成按钮 - Xcode

Posted

技术标签:

【中文标题】当用户更改值时启用完成按钮 - Xcode【英文标题】:Enabling Done Button When User Changes Values - Xcode 【发布时间】:2012-12-04 16:48:37 【问题描述】:

如果在键盘上键入任何值而没有按回车键并且其中两个标签已从“选择”更改为其他内容,我正在尝试将其设置为启用顶部的按钮。但是,我尝试使用 IBAction 说:

 - (IBAction)valuesChanged 
if (textField.text != nil && ![labelOne.text isEqualToString:@"Select"] && ![labelTwo.text isEqualToString:@"Select"]) 
    NSLog(@"Success");
 

else 
    NSLog(@"No Success");
   

但我意识到这不起作用,因为:

当我将 IBAction Sent Event 设置为“Value Changed”时,文本字段不起作用 标签不接受操作。

我该怎么做?

【问题讨论】:

valuesChanged 方法是否被调用? @ekims 不,当我尝试在 textField 中键入内容时,没有任何内容得到 NSLogged。但无论哪种方式,该方法都行不通,因为标签不能有 IBAction 否,但您可以将它们(标签)设为 Outlet 并编辑 valuesChanged 上的文本。但首先您需要使用 valuesChanged 方法连接您的 textFields,或者在创建 UITextFields 时以编程方式添加选择器。 @ekims 好吧,我知道如何更改文本的值,我只需要它来意识到,一旦满足所有要求,将完成按钮更改为启用 顺便说一句,这两个标签正在用户端进行更改。这意味着他们可以随心所欲地更改它。不是程序方面。我已经开始更改标签了,我只是不知道如何使它意识到如果所有标签都被更改以启用完成按钮 【参考方案1】:

告诉您用户正在文本字段中键入字符或以其他方式更改其内容的文本字段委托方法是textField:shouldChangeCharactersInRange:replacementString:。在您的文本字段委托中实现它并根据需要做出响应。你也只会返回 YES。

您的原始代码无法连接的一个原因可能是您没有使用 IBAction 方法的规范形式;应该是

 - (IBAction)valuesChanged:(id)sender 

原始代码中的另一个问题是 UITextField 不会发出 Value Changed。你想要的是编辑改变。但是委托方法也同样有效。

【讨论】:

【参考方案2】:

尝试UITextField 委托方法。

- (void)textFieldDidBeginEditing:(UITextField *)textField;
- (void)textFieldDidEndEditing:(UITextField *)textField;

【讨论】:

但是如果我在文本字段中输入然后更改两个标签的值会发生什么?然后在我返回并再次选择 textField 之前,将不会启用完成按钮

以上是关于当用户更改值时启用完成按钮 - Xcode的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 的另一个屏幕上完成某个操作时更改按钮的状态?

使用 jQuery 检测表单输入的自动完成

使用自动完成填充表单时,Javascript 不启用按钮

访问 Xcode 按钮文本但未反映背景更改 UI

捕获自动完成文本框交叉图标的事件

在文本字段中插入一个字符后启用完成按钮: textFieldDidEndEditing: 或 textFieldShouldBeginEditing: 或?