2012-12-04 24 views
0

我想让它到达的地方,如果任何值键入的键盘上没有击中返回键和两个标签已从“选择”更改为其他,顶部的按钮变为启用状态。不过,我一直在使用一个IBAction为说尝试:当用户更改值时启用完成按钮 - Xcode

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

else { 
    NSLog(@"No Success"); 
    } 
} 

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

  • 当我把IBAction为发送的事件为“价值改变文本框不起作用“
  • 标签不会接受操作。

我该如何去做这件事?

+0

是否调用valuesChanged方法? – ekims

+0

@ekims不,当我尝试输入textField时,没有任何东西会被NSLogged。但无论哪种方法不会工作,因为标签不能有IBAction – Zack

+0

不,但您可以让他们(标签)Outlet并编辑valuesChanged上的文本。但首先你需要用** valuesChanged **方法来连接你的textField,或者在创建UITextField时以编程方式添加选择器。 – ekims

回答

1

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

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

- (IBAction)valuesChanged:(id)sender { 

在原始代码的另一个问题是,为UITextField不排放值已更改。你想要的是Editing Changed。但委托方法也可以。

0

尝试UITextField委托方法。

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

但是如果我在文本字段中键入然后更改值这两个标签?然后,完成按钮将不会启用,直到我再次选择textField – Zack

相关问题