2013-10-10 48 views
0

我有一个NSNumberFormatter的NSTextField。我将格式化程序的最小值设置为0(因为我无法将其设置为0.01),并将样式设置为小数点。 NSTextField使用浮点型ivar对其值进行绑定,并将该操作设置为“仅在发送时输入”。这工作得很好。NSTextField与NSNumberFormatter - 不允许无值

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

我想:

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

但这并不设置的NSTextField。我很茫然,任何帮助表示赞赏。

感谢 GW

回答

0

擦除的情况下,实现下面的委托方法

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

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

对于按回车键,然后点击关闭的情况下,实现

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


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


} 
+0

基本上,这让我有。我也必须重写setNilValueForKey。但是这些委托方法在绑定被设置后调用。 –

+0

是的,你必须首先将你的班级设置为文本字段的代表 – Neha