Как мне установить состояние кнопки Bold для NSTextView?

У меня есть NSTextView, для которого я хочу добавить кнопки форматирования (жирный, курсив и т. Д.).

Прямо сейчас у меня есть кнопка, установленная на тип "переключение", с различными изображениями для состояний включения / выключения.

Метод toggle проверяет состояние кнопки и отправляет общий экземпляр NSFontManager.

    NSFontManager *fontManager = [NSFontManager sharedFontManager];
       if(self.writeBoldButton.state){
        [fontManager addFontTrait:sender];
       }else {
        [fontManager removeFontTrait:sender];
       }

Теперь мне нужно добавить код, который будет обновлять состояние кнопки всякий раз, когда пользователь меняет точку вставки или выбирает новый текст в NSTextView. Но как мне получить правильное значение?

1 ответ

Решение

Я немного поработал над этим после ввода вопроса и нашел решение, которое работает. Вот код, который я в конечном итоге включил в метод делегата NSTextView, textViewDidChangeTypingAttributes:(NSNotification *)aNotification.

 NSFont *font = [[[self manuscriptTextView]typingAttributes]objectForKey:@"NSFont"];
   NSFontManager *fontManager = [NSFontManager sharedFontManager];

if ([fontManager traitsOfFont:font]==NSFontBoldTrait)
{
    [[self writeBoldButton]setState:1];
}else{
    [[self writeBoldButton]setState:0];
}
Другие вопросы по тегам