1

我有一个绑定到某个对象“缩放”属性的 NSTextField。

在这个对象的类实现中,我有以下

- (void)setZoom:(CGFloat)zoom
{
    _zoom = MAX(0, MIN(10, zoom));
}

如果我在文本字段中写“-5”,setZoom:将以“-5”作为参数调用,_zoom 将设置为 0。

然后问题是文本字段没有更新自身,它显示“-5”而不是重新读取它刚刚设置的属性值。

如果我myObject.zoom = -5;在代码中这样做,文本字段将正确显示 0。

我试图将 _zoom =... 包装在 willChangeValueForKey/didChangeValueForKey 调用中,但它没有改变任何东西。

4

1 回答 1

1

您可以尝试这样做:

- (void)setZoom:(CGFloat)zoom
{
    CGFloat corectedValue = MAX(0, MIN(10, zoom));
    if (zoom != corectedValue)
    {
        [self setZoom:correctedValue];
    } else {
        _zoom = zoom;
    }
}
于 2012-10-26T17:34:16.477 回答