这是设置:我有一个 IKImageBrowserView 的子类,它的zoomValue
属性绑定到VFBrowserZoomValue
shared 中的一个键NSUserDefaultsController
。我有一个NSSlider
其value
绑定绑定到同一个键。
zoomValue
这可以完美地从滑块更改浏览器。
我正在尝试-magnifyWithEvent:
在我的IKImageBrowserView
子类中实现以允许在触控板上使用捏合手势缩放浏览器。
这是我的实现:
-(void)magnifyWithEvent:(NSEvent *)event
{
if ([event magnification] > 0) {
if ([self zoomValue] < 1) {
[self setZoomValue: [self zoomValue] + [event magnification]];
}
}
else if ([event magnification] < 0) {
if ([self zoomValue] + [event magnification] > 0.1) {
[self setZoomValue: [self zoomValue] + [event magnification]];
}
else {
[self setZoomValue: 0.1];
}
}
}
这会zoomValue
正确更改浏览器。问题是NSUserDefaults
没有用新值更新。
在应用程序的其他地方,我有一个-observeValueForKeyPath:ofObject:change:context:
观察浏览器的zoomValue
. 如果我在该方法中记录浏览器的缩放值、滑块的值和默认值,我会看到浏览器的 zoomValue 没有被推入 NSUserDefaults 并且滑块没有更新。
我试过-magnifyWithEvent:
用调用来包围该方法,-{will,did}ChangeValueForKey
但没有效果。