Всякий раз, когда пользователь вводит номер, мое приложение автоматически добавит знак валюты перед этим номером. Например, когда пользователь вводит «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:
, но вместо этого ячейка удалит текст.
Я пробовал следующее: 'NSNumberFormatter * formatter = [[self.tableView currentEditor] formatter];' И его показная ошибка: 'Нет видимого @interface для NSText объявляет форматировщик селектора.' Потому что '[tableview currentEditor]' возвращает 'NSText'. Где вы на самом деле изменились? – triandicAnt