使用Cocoa Bindings将程序化文本字段值更改传播到模型

bas*_*ibe 2 cocoa textbox subclass cocoa-bindings

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

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

value将滚动文本字段绑定到其他对象.滚动现在可以更新文本字段上的可见文本.但是,绑定值不会更改.

为什么绑定值不会改变?或者:如何使绑定值识别更改?

pau*_*kow 5

Apple的设计不会改变绑定值.要在更改后自己将值传播到模型,请调整以下代码:

NSDictionary *bindingInfo = [self infoForBinding:NSValueBinding];
[[bindingInfo valueForKey:NSObservedObjectKey] setValue:self.doubleValue
                                             forKeyPath:[bindingInfo valueForKey:NSObservedKeyPathKey]];
Run Code Online (Sandbox Code Playgroud)

(感谢@DrummerB获取Apple链接!)