如何为NSTextView设置粗体格式按钮的状态?

时间:2014-04-02 20:37:16

标签: cocoa nstextview nsfontmanager

我有一个NSTextView,我想添加格式按钮(粗体,斜体等)。

现在,我有一个按钮设置为"切换"类型,具有开/关状态的不同图像。

toggle方法检查按钮的状态并发送NSFontManager的共享实例。

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

现在我需要添加代码,以便在用户更改插入点或在NSTextView中选择新文本时更新按钮的状态。但是我如何获得正确的价值呢?

1 个答案:

答案 0 :(得分: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];
}