NSTextField - сделать выделенный текст жирным, курсивом или подчеркиванием? - PullRequest
3 голосов
/ 01 февраля 2011

У меня есть NSTextField, где пользователь может писать текст.Я хотел бы иметь возможность сделать 3 кнопки: жирный, курсив и подчеркивание;эти кнопки должны изменить выбор пользователя в текстовом поле на полужирный, курсив или подчеркивание.

Может кто-нибудь дать мне указатель, как это сделать?

Ответы [ 2 ]

7 голосов
/ 01 февраля 2011

Прежде всего, необходимо включить поддержку расширенного текста, и вы можете сделать это либо в Интерфейсном Разработчике, отметив опцию «Расширенный текст» в инспекторе, либо по коду, используя setAllowsEditingTextAttributes:.

Тогда это все о NSAttributedString с.

Большая проблема заключается в том, что вам нужно применить изменения к выделенному тексту. Это невозможно при NSTextField с. Только с NSTextView с.

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

NSTextView *editor = (NSTextView *)[window fieldEditor:YES forObject:myTextField]

Тогда вы можете счастливо вызвать метод NSTextView setSelectedTextAttributes:.

Узнайте больше о редакторе полей здесь, в Apple и в CocoaDev

2 голосов
/ 01 февраля 2011

Предполагая, что ваше NSTextfield * равно textField , приведенный ниже код подчеркивает выбор:

NSMutableAttributedString * as = [[[textField attributedStringValue] mutableCopy] autorelease];
[as beginEditing];
[as addAttribute:NSUnderlineStyleAttributeName
           value:[NSNumber numberWithInt:NSUnderlineStyleSingle]
           range:[[[textField window] fieldEditor:YES forObject:textField] selectedRange]];

[as endEditing];
[textField setAttributedStringValue:as];
...