带有NSNumberFormatter的NSTextField - 不允许nil值

时间:2013-10-10 23:52:39

标签: cocoa binding cocoa-bindings nstextfield nsnumberformatter

我有一个带有NSNumberFormatter的NSTextField。我将格式化程序设置为min为0(因为我无法将其设置为0.01),并将样式设置为十进制。 NSTextField使用float ivar绑定其值,并将操作设置为“Send On Enter Only”。这很好用。

我想要做的是,如果用户试图删除该值并点击关闭或按Enter键,我想在编辑之前恢复原始值。

我试过了:

-(void) setNilValueForKey:(NSString*) key {
    if ([key compare:@"valX"] == NSOrderedSame) {
        self.valX = valX;
    }
}

但这不会设置NSTextField。我很茫然,感谢任何帮助。

由于 GW

1 个答案:

答案 0 :(得分:0)

对于擦除的情况,请将以下委托方法实现为

- (void)controlTextDidChange:(NSNotification *)notification
{
    NSTextField* textfield = [notification object];

        if([textfield intValue] == 0)
        {
            [textfield setValue:valX];
        }
}

如果按Enter键并单击关闭,请执行

- (void)controlTextDidEndEditing:(NSNotification *)obj
{


    NSTextField* textfield = [notification object];
       [textfield setValue:valX];


}