objective-c - 未在 setStringValue 上调用 ControlTextDidChange

标签 objective-c xcode cocoa

我已经实现了一个委托(delegate)及其 controlTextDidChange 方法,只要我在 NSTextField 中输入文本,它就会被调用。

当我通过 [field setStringValue:@"newText"] 以编程方式设置文本时,不会调用 controlTextDidChange

你能解释一下吗?以及我应该如何以编程方式设置触发调用我的委托(delegate)方法 controlTextDidChange 的新值。

最佳答案

controlTextDidChange 委托(delegate)仅在用户交互时触发,
手动更新 NSControl 不会触发委托(delegate)。

正确的解决方案

解决方案是创建一个单独的方法来处理文本更改:

- (void)myCustomFunction {
     // Triggered in case the text is changed,
     // no matter by user or programmatically
}

从委托(delegate)中触发这个方法:

- (void)controlTextDidChange:(NSNotification *)aNotification {
    [self myCustomFunction];
}

如果文本以编程方式更改:

[theField setStringValue:@"text"];
[self myCustomFunction];

现在您可以在同一个方法中处理这两种情况。

关于objective-c - 未在 setStringValue 上调用 ControlTextDidChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12611062/

相关文章:

objective-c - 如何将 UIButton 属性绑定(bind)到另一个属性?

iphone - 删除 NSManagedObject "The operation couldn’ 后出错,无法完成”

xcode - 在自定义标签中附加不同大小的字体

ios - 如何在TableView单元格中显示URL图像而不会卡住?

objective-c - CIFilter guassianBlur 和 boxBlur 正在缩小图像 - 如何避免调整大小?

objective-c - 核心数据文件大小

objective-c - 重新分配一个自动释放的对象

ios - 即使在解除分配后,GPUImageFilters 中的某些内容仍保留在内存中

html - Xcode 5 和本地 HTML 文件中的图像

objective-c - NSTextView 无法使用自动布局正确调整大小