cocoa - 使用 Cocoa Bindings 将编程文本字段值更改传播到模型

标签 cocoa textbox subclass cocoa-bindings

我尝试了一个非常简单的实现,如下所示:

@implementation ScrollingTextField
- (void)scrollWheel:(NSEvent *)event {
    self.doubleValue -= event.scrollingDeltaY;
}
@end

我将滚动文本字段的绑定(bind)到其他对象。现在,滚动可以很好地更新文本字段上的可见文本。但是,绑定(bind)值不会改变。

为什么绑定(bind)值没有改变? 或者:如何让绑定(bind)值识别变化?

最佳答案

绑定(bind)值不变by Apple's design 。要在更改后自行将值传播到模型,请调整以下代码:

NSDictionary *bindingInfo = [self infoForBinding:NSValueBinding];
[[bindingInfo valueForKey:NSObservedObjectKey] setValue:self.doubleValue
                                             forKeyPath:[bindingInfo valueForKey:NSObservedKeyPathKey]];

(感谢 @DrummerB 提供的 Apple 链接!)

关于cocoa - 使用 Cocoa Bindings 将编程文本字段值更改传播到模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8310236/

相关文章:

macos - 强制应用程序在主显示器上的特定位置启动

cocoa - NSWindow 内容边框与 CALayer 的几何形状混淆

objective-c - 向 NSImageView 添加阴影

cocoa - 更改XCode的代码自动完成格式

当文本框以编程方式更改时的 javascript 触发事件

string - VB6 文本框字体粗细操作

java - 如果子类中的实例方法具有相同的签名和不同的返回类型,它是覆盖方法还是新方法?

java - 通过索引定位元素对于具有相似属性的元素不起作用

exception - 是否可以通过向 Haskell 添加一个新功能(我称之为 "subtype system")来发现用 Haskell 编写的程序中的大部分错误?

java - Parent No Argument Constructor 调用覆盖的方法