保持NSTextView的字体不变

时间:2012-07-06 07:44:46

标签: objective-c macos cocoa fonts nstextview

我认为这是直截了当的,但看起来我错了。基本上,我要做的就是保持字体不变为Apple默认值:Helvetica Regular 12pt。

我已经创建了NSDocument的子类,在我的实现文件中,我有以下方法:

- (void)windowControllerDidLoadNib:(NSWindowController*)aController
{
    [super windowControllerDidLoadNib:aController];

    if(attrString)
    {
        [[textView textStorage] setAttributedString:attrString];
        [[textView textStorage] setFont:[NSFont fontWithName:@"Menlo Bold" size:24]];
    }

当我打开文件时,此方法可以正常工作,但如果我删除所有文本然后再次键入,则字体将重置为... Helvetica Regular 12pt ...我想要的只是保持字体和大小正如我在程序的整个生命周期中指定的那样。

1 个答案:

答案 0 :(得分:1)

您需要设置文本视图的输入属性以包含密钥NSFontAttributeName的字体。

然而,我会更进一步。如果您知道您不希望模型中的某个字体(NSTextStorage - NSTextView的后备存储),只需子类化NSTextStorage并覆盖属性setter和getter。 NSTextView使用户可以访问字体菜单,复制/粘贴仍然允许使用某些字体。真正保证它永远不会进入文本视图的唯一方法是永远不允许它进入模型。