我搜索了一段时间,找到了“关键值观察”协议,但是,当我的文本字段的值在代码中改变时(仅使用[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 – 听取我的文本字段的值更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)