objective-c – 听取我的文本字段的值更改

objective-c – 听取我的文本字段的值更改,第1张

概述我正在尝试了解如何从我的窗口中的文本字段捕获“文本更改”事件。我习惯了Java的“动作侦听器”,在Objective-C/C++ocoa中找不到任何类似的东西。 我搜索了一段时间,找到了“关键值观察”协议,但是,当我的文本字段的值在代码中改变时(仅使用[textfield setStringValue …]),observeValueForKeyPath:method(function?)才会触发 我正在尝试了解如何从我的窗口中的文本字段捕获“文本更改”事件。我习惯了Java的“动作侦听器”,在Objective-C/C++ocoa中找不到任何类似的东西。
我搜索了一段时间,找到了“关键值观察”协议,但是,当我的文本字段的值在代码中改变时(仅使用[textfIEld setStringValue …]),observeValueForKeyPath:method(function?)才会触发,例如),而不是通过键入它。

当用户键入文本字段时,如何“监听”值更改?

解决方法 您可以为NSTextFIEld实例设置一个委托,并让代理实现以下方法:

- (voID)controlTextDIDChange:(NSNotification *)notification {    // there was a text change in some control}

您的委托对象可以是应用程序委托,窗口控制器,视图控制器或应用程序中的其他对象。代表可以通过程序设置

[myTextFIEld setDelegate:delegateObject];

或者,在Interface Builder中,通过NSTextFIEld控件中可用的委托插座。

请注意,如果有多个控件挂接到同一代理,则将为每个控件发送-controlTextDIDChange:,即为不同的控件调用相同的方法。如果您想要根据文本更改的控件的不同行为,可以使用 – [NSNotification对象]来标识发送通知的控件。

例如,如果您有两个文本字段与相应的出口名称为FIEldFIEld和addressFIEld,并且您为两个字段设置了相同的委托,那么:

- (voID)controlTextDIDChange:(NSNotification *)notification {    // there was a text change in some control    // [notification object] points to the control that has sent    // the notification    if ([notification object] == nameFIEld) {        // nameFIEld has changed    }    else if ([notification object] == addressFIEld) {        // addressFIEld has changed    }}

或者,您可以为每个文本字段有一个代理。在这种情况下,不需要测试[通知对象]。

总结

以上是内存溢出为你收集整理的objective-c – 听取我的文本字段的值更改全部内容,希望文章能够帮你解决objective-c – 听取我的文本字段的值更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1035517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存