在Interface Builder中更改NSTextView的文本颜色将不起作用

时间:2010-09-04 16:10:00

标签: cocoa interface-builder

我可以为NSTextView设置背景颜色,也可以设置插入颜色,但是当我尝试更改文字颜色时,它就不起作用了。

我可以在每次插入文本之前以编程方式设置颜色,但我可能做错了,因为Interface Builder提供了这个选项。

以下是我的检查员的样子:

alt text

3 个答案:

答案 0 :(得分:5)

以下是我在下面尝试的内容以及我发现的结果,这些结果使我得出结论。

  1. (a)添加NSTextView(b)更改颜色。结果:不起作用 enter image description here

  2. (a)添加NSTextView(b)然后更改文本(c)按enter键,因为当我没有按回车键(d)然后更改颜色时它失败了。结果:工作 enter image description here

  3. 如果未在Interface-Builder中设置NSTextView的text属性,则似乎不保存文本颜色属性。因此导致应用程序在启动时选择默认颜色。但是,保存了其他属性,例如Background-Color和Insertion颜色。这使我认为这是界面构建器中的一个错误。

    作为一种解决方法,您可以在文本框中留下单个空格并在界面构建器中设置颜色,但这可能对您不利,具体取决于您对NSTextView的操作

答案 1 :(得分:1)

据我所知 - 当文本未初始化时,appkit中的(10.10)存在错误。这个黑客让我摆脱了麻烦。

NSTextView *tf = 
tf.delegate = self;

- (void)textDidChange:(NSNotification *)aNotification {
    NSLog(@"notificaiton:%@",aNotification);
    NSMTextView *tv = (NSMTextView *)[aNotification object];
    [tv setTextColor:[NSColor whiteColor]];
    [[tv textStorage] setFont:[NSFont systemFontOfSize:30]];
}

答案 2 :(得分:0)

NSTextView从系统范围的“字体面板”(它是一个全局组件)获取字体和字体颜色-因此在NotePad中设置字体颜色,您很可能会发现下次使用该字体颜色时也将其应用于NSTextView。

您需要重写此行为,以防止NSTextView使用系统字体面板。现在,对于暗模式,这似乎更加困难,因为您应该尝试采用默认的暗/亮模式字体颜色并控制背景颜色。