我有一个绑定到某些对象“ zoom”属性的NSTextField。
在此对象的类实现中,我具有以下内容
- (void)setZoom:(CGFloat)zoom
{
_zoom = MAX(0, MIN(10, zoom));
}
如果我在文本字段中输入“ -5”,则将使用“ -5”作为参数调用
setZoom:
,并将_zoom设置为0。然后的问题是,文本字段不会自动更新,而是显示“ -5”,而不是重新读取刚刚设置的属性值。
如果我在代码中执行
myObject.zoom = -5;
,则文本字段将正确显示0。我试图将_zoom = ...包装在willChangeValueForKey / didChangeValueForKey调用中,但没有任何改变。
最佳答案
您可以尝试通过以下方式进行操作:
- (void)setZoom:(CGFloat)zoom
{
CGFloat corectedValue = MAX(0, MIN(10, zoom));
if (zoom != corectedValue)
{
[self setZoom:correctedValue];
} else {
_zoom = zoom;
}
}