2010-05-25 4 views
0

Всякий раз, когда пользователь вводит номер, мое приложение автоматически добавит знак валюты перед этим номером. Например, когда пользователь вводит «1» в текстовое поле, текст внутри него становится «$ 1.00». Все хорошо, когда я использую NSNumberFormatter, NSTextField и его метод делегирования control:didFailToFormatString:errorDescription:.Замена текста в NSTextFieldCell внутри NSTableView

- (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

Я просто хочу, чтобы все знали, что я решил проблему, попросив NESTableView currentEditor и заменив текст оттуда.

Кроме того, [control formatter] будет возвращать нуль, если приемник является NSTableView.

+0

Я пробовал следующее: 'NSNumberFormatter * formatter = [[self.tableView currentEditor] formatter];' И его показная ошибка: 'Нет видимого @interface для NSText объявляет форматировщик селектора.' Потому что '[tableview currentEditor]' возвращает 'NSText'. Где вы на самом деле изменились? – triandicAnt

Смежные вопросы