Objective c 当用户更改值时启用“完成”按钮-Xcode
我试图使它成为一种状态,如果在键盘上键入任何值而不按回车键,并且其中两个标签已从“选择”更改为其他内容,则顶部的按钮将启用。但是,我尝试使用IBAction说:Objective c 当用户更改值时启用“完成”按钮-Xcode,objective-c,ios,uibutton,Objective C,Ios,Uibutton,我试图使它成为一种状态,如果在键盘上键入任何值而不按回车键,并且其中两个标签已从“选择”更改为其他内容,则顶部的按钮将启用。但是,我尝试使用IBAction说: - (IBAction)valuesChanged { if (textField.text != nil && ![labelOne.text isEqualToString:@"Select"] && ![labelTwo.text isEqualToString:@"Select"]) {
- (IBAction)valuesChanged {
if (textField.text != nil && ![labelOne.text isEqualToString:@"Select"] && ![labelTwo.text isEqualToString:@"Select"]) {
NSLog(@"Success");
}
else {
NSLog(@"No Success");
}
}
但我意识到这不起作用,因为:
- 当我将IBAction发送事件设置为“值已更改”时,textfield不起作用
- 标签不接受操作
如何执行此操作?尝试
UITextField
委托方法
- (void)textFieldDidBeginEditing:(UITextField *)textField;
- (void)textFieldDidEndEditing:(UITextField *)textField;
告诉您用户正在文本字段中键入字符或以其他方式更改其内容的文本字段委托方法是
textField:shouldChangeCharactersRange:replacementString:
。在您的文本字段中实现它,并根据需要作出响应。您也将返回YES
无法连接原始代码的一个原因可能是您没有使用iAction方法的规范形式;应该是
- (IBAction)valuesChanged:(id)sender {
原始代码中的另一个问题是UITextField不发出更改的值。你想要的是改变编辑。但是delegate方法也同样有效。是否调用了valuesChanged方法?@ekims否,当我尝试在文本字段中键入时,不会记录任何内容。但无论哪种方式,该方法都不起作用,因为标签不能有IBActionno,但您可以将它们(标签)作为一个出口,并在valuesChanged上编辑文本。但首先,在创建UITextFields时,您需要使用ValuesAnged方法连接文本字段,或者以编程方式添加选择器。@ekims我知道如何更改文本的值,我只需要它意识到,一旦满足所有要求,将“完成”按钮更改为“启用”,两个标签就会被更改在用户端。这意味着他们可以随意改变它。不是程序方面。我已经开始改变标签了,我只是不知道如何使它达到它意识到的程度,如果所有标签都被改变以启用“完成”按钮,但是如果我在文本字段中键入,然后改变两个标签的值,会发生什么?然后,直到我返回并再次选择文本字段,完成按钮才会启用