Форматирование текста в NSTextField - PullRequest
1 голос
/ 27 августа 2010

У меня есть графическое приложение, которое использует экземпляр NSTextField для редактирования текста на месте, эта функция была добавлена ​​давно, и у меня никогда не было причин проверять ее, однако недавно я получил отчет: text filed hasn 'Разрешить форматирование текста.Формат -> Подэлементы текстового меню отключены, поэтому нет способа установить абзац текстового элемента.

Вопрос: как настроить NSTextField для поддержки редактирования абзаца?Я уверен, что это работало раньше, так как у меня есть несколько проектов с форматированным текстом, и NSTextField был там с момента рождения приложения.Я что-то пропустил с обновлениями system / XCode?

Мой NSTextField является многострочным, редактируемым, позволяет редактировать текстовые атрибуты.

1 Ответ

3 голосов
/ 01 сентября 2010

Если кто-то столкнется с этим в будущем, я могу подробно описать проблему:

  1. NSTextView отказывается применять форматирование, если не используется линейка (с недавним обновлением ОС, я полагаю)
  2. Сам NSTextField не редактирует текст, он использует общий экземпляр NSTextView, управляемый владельцем NSWindow
  3. Текстовый редактор по умолчанию из NSWindow не использует линейки.

ЭтоРезультаты отключили форматирование текста при использовании NSTextField.

Решение заключается в создании подкласса NSWindow:

@implementation MyWindow

- (NSText *)fieldEditor:(BOOL)createWhenNeeded forObject:(id)anObject
{
    NSText* text = [super fieldEditor:createWhenNeeded forObject:anObject];
    if ([text isKindOfClass:[NSTextView class]])
        [(NSTextView *)text setUsesRuler:YES];
    return text;
}

@end

И вуаля, форматирование вернулось.

...