替换NSTableView中NSTextFieldCell中的文本

时间:2010-05-25 16:21:37

标签: objective-c cocoa

每当用户输入一个号码时,我的应用程序会在该号码前自动添加一个货币符号。例如,当用户在文本字段中键入“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:,但单元格会删除文本。

1 个答案:

答案 0 :(得分:0)

我只是想让大家知道我已经通过询问NSTableView的currentEditor并从那里替换文本来解决问题。

此外,如果接收者是NSTableView,[control formatter]将返回nil。