每当用户输入一个号码时,我的应用程序会在该号码前自动添加一个货币符号。例如,当用户在文本字段中键入“1”时,其中的文本将变为“$ 1.00”。当我使用NSNumberFormatter,NSTextField及其委托方法control:didFailToFormatString:errorDescription:
时,一切都很好。
- (BOOL)control:(NSControl *)control didFailToFormatString:(NSString *)string errorDescription:(NSString *)error
{
if ([[control formatter] isKindOfClass:[NSNumberFormatter class]])
{
NSNumberFormatter *formatter = [control formatter];
if ([formatter numberStyle] == NSNumberFormatterCurrencyStyle && !
[string hasPrefix:[formatter currencySymbol]])
{
NSDecimalNumber *new = [NSDecimalNumber decimalNumberWithString:string];
if (new == [NSDecimalNumber notANumber]) {
new = [NSDecimalNumber zero];
}
[control setObjectValue:new];
}
}
return YES;}
现在,当用户在NSTableView内的单元格中键入数字时,我希望拥有此功能。我尝试使用control:didFailToFormatString:errorDescription:
,但单元格会删除文本。
答案 0 :(得分:0)
我只是想让大家知道我已经通过询问NSTableView的currentEditor并从那里替换文本来解决问题。
此外,如果接收者是NSTableView,[control formatter]
将返回nil。