Objective c 在文本框中输入值时如何调用方法

Objective c 在文本框中输入值时如何调用方法,objective-c,textbox,Objective C,Textbox,在我的应用程序中,我有一个文本框和手持扫描仪。当我扫描某物时,条形码值出现在文本框中。我不需要任何特殊代码来获取文本框中的条形码值。在这里我很好。但现在当我在textbox中有一个值时,我想调用一个方法,该方法将进一步对核心数据进行一些更改。我有代码来更改文本框中value=value的行的核心数据 但我不知道如何调用这个方法,或者如何知道在文本框中输入了值,我可以调用这个方法 请帮我做这件事。您需要创建一个IBOutlet变量并将其链接到您的文本框 @interface YourClassOr

在我的应用程序中,我有一个文本框和手持扫描仪。当我扫描某物时,条形码值出现在文本框中。我不需要任何特殊代码来获取文本框中的条形码值。在这里我很好。但现在当我在textbox中有一个值时,我想调用一个方法,该方法将进一步对核心数据进行一些更改。我有代码来更改文本框中value=value的行的核心数据

但我不知道如何调用这个方法,或者如何知道在文本框中输入了值,我可以调用这个方法


请帮我做这件事。

您需要创建一个IBOutlet变量并将其链接到您的文本框

@interface YourClassOrController
{
    IBOutlet NSTextField *myTextField;
}
...
@end
在interface Builder中,需要按住Ctrl键并拖动以将文本字段链接到变量

最后,在代码中使用

NSString code = [myTextField stringValue];

有时手持设备会在末尾添加返回字符,如果您这样做,则会在文本字段中添加委托

self.textField.delegate = self;
看,这个方法叫做:

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"textFieldDidEndEditing method called");
}
如果未调用此方法,请向文本字段添加通知,文本更改时将调用该字段:

[self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
并添加将被调用的方法:

-(void)textFieldDidChange(id)sender
{
    NSLog(@"textFieldDidChange method called");
}

在updateCoreData方法中,通过if(scanner finishing的代码){[self updateCoreData];}查找扫描程序何时完成,完成核心数据更新工作,这就是您需要做的全部工作。希望有帮助:)这是一个问题,我不知道什么时候从扫描仪在文本字段中输入值。我想在文本框中输入值后立即调用updateCoreData方法。但我不知道如何检查是否在TextBox中输入了值。如果
-textField didendediting:
不起作用,为什么不使用代理的
-textField:shouldChangeCharactersRange:replacementString:
,而不是通知?@AminNegm创建此方法是为了做其他事情。如果不想更改文本,应该使用它。所以我宁愿使用通知,但这是我个人的选择。我不这么认为:这种方法可以拒绝内容。通知永远不可能是故意的。这不是有意的,但设计上根本不可能。(你可以有很多通知观察员。哪一个应该做出决定?)真正(预期)的区别是:通知观察员通过广播得到通知,代理特定于一个对象。在这种情况下,他希望以特定的方式对对象->委托的输入作出反应。举个例子:如果他在这个软件中有许多(>1)独立的部分对输入作出反应,那么通知将是更好的选择。在这两种情况下(+textfielddidediting)。如果我使用通知,则会调用textFieldDidChange方法,使项数等于textfield中的字符数。我只想调用一次方法。