【问题标题】:Keep NSTextView's Font From Changing保持 NSTextView 的字体不变
【发布时间】:2012-07-06 07:44:45
【问题描述】:

我以为这会是直截了当的,但看起来我错了。基本上,我要做的就是防止字体更改为 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... 我只想保持字体和大小正如我在程序的整个生命周期中指定的那样。

【问题讨论】:

  • 为什么不在属性字符串而不是文本视图中设置字体?
  • 因为我是菜鸟,不知道自己在做什么。在这本书的几章之后,我意识到这看起来确实有点有趣。

标签: objective-c macos cocoa fonts nstextview


【解决方案1】:

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

但是,我会更进一步。如果您知道您的模型中永远不需要某种字体(NSTextStorage - NSTextView 的后备存储),只需子类化 NSTextStorage 并覆盖属性设置器和获取器。 NSTextView 允许用户访问字体菜单,并且复制/粘贴仍将允许某些字体进入。真正保证它永远不会进入您的文本视图的唯一方法是永远不允许它进入模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多