我有一个绑定到某个对象的NSTextField" zoom"属性。
在这个对象的类实现中,我有以下
- (void)setZoom:(CGFloat)zoom
{
_zoom = MAX(0, MIN(10, zoom));
}
如果我写" -5"在文本字段中,setZoom:
将使用" -5"作为参数,_zoom将设置为0。
然后问题是文本字段没有自我更新,它显示" -5"而不是重新阅读它刚刚设定的属性值。
如果我在代码中执行myObject.zoom = -5;
,则文本字段将正确显示0。
我试图在willChangeValueForKey / didChangeValueForKey调用中包装_zoom = ...但它没有改变任何东西。
答案 0 :(得分:1)
您可以尝试这样做:
- (void)setZoom:(CGFloat)zoom
{
CGFloat corectedValue = MAX(0, MIN(10, zoom));
if (zoom != corectedValue)
{
[self setZoom:correctedValue];
} else {
_zoom = zoom;
}
}