2013-10-10 77 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