【问题标题】:Disable NSTextField without changing color of multi-colored text禁用 NSTextField 而不更改多色文本的颜色
【发布时间】:2014-05-02 14:00:22
【问题描述】:

每当我禁用 NSTextField 时,文本就会失去颜色并变为灰色。如何禁用文本字段并保持文本颜色?在我的特殊情况下,有些单词是红色的。当我禁用时,我希望这些字词保持红色。

【问题讨论】:

  • 所以您使用的是属性字符串,而不是普通字符串?
  • 感谢 Droppy。我会在我输入时将文本描述为“动态着色”。我捕捉到controlTextDidChange 事件,如果它“不正确”,则将它涂成红色。在某些时候,我已经完成了输入文本,并且不应重新访问该文本框。因此我想禁用它,但它仍然应该在我的动态着色中可见,这样我就可以回头看看我“错”了哪些词。
  • 您应该重新考虑为禁用的文本字段设置不同的样式,因为这会使用户感到困惑。

标签: objective-c nstextfield disabled-control text-coloring


【解决方案1】:

您需要继承 NSTextField 才能做到这一点。看到这个CocoaBuilder thread

- (void)setEnabled:(BOOL)flag
{
    [super setEnabled:flag];

    if (!flag) {
        [self setTextColor:[NSColor secondarySelectedControlColor]];
    } else {
        [self setTextColor:[NSColor controlTextColor]];
    }
}

【讨论】:

  • 感谢您的回复!我想我需要重新表述我的问题,以便更准确地适应我的情况。我的文字有多种颜色...例如,有些单词是红色的,我希望它们在禁用时保持红色。
【解决方案2】:

我发现,在编辑文本时,我可以设置颜色和所有内容,但即使我没有禁用文本框,也会出现文本丢失颜色的问题。我忽略了让我的 NSTextField 允许富文本。现在,即使我setEditable:NO,文本字段也会保留所有颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2013-09-05
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    相关资源
    最近更新 更多