防止NSTableRowView不在焦点时更改突出显示?

亚伦

我在左窗格中有一个带有表视图的NSSplitView。我注意到,当我在左窗格中选择一个项目并将焦点更改为右窗格时,左窗格将失去焦点,突出显示的行的突出显示颜色变为灰色,文本变为黑色。

我通过覆盖drawSelectionInRectNSTableRowView覆盖了突出显示颜色这样,突出显示的颜色将保持相同的自定义颜色,但是文本将变暗,这看起来是错误的。

我可以在表格视图不清晰时让突出显示颜色改变,还是在焦点不清晰时防止文本变暗?

亚伦

当您在拆分视图中单击另一个视图时,似乎OS X在行视图及其子视图上调用setBackgroundStyle。有趣的是,它似乎只发生在NSOutlineView上。

因为我有一些代码已经到位处理时选择行(用于改善对比度),而且我明确地设置背景风格,当我需要用改变我的图像不同的图像outlineViewSelectionDidChangeoutlineViewSelectionIsChanging我重写setBackgroundStyle是一个空操作,我做了我自己的自定义设置器,它改变了_backgroundStyleivar。

看起来像这样:

@implementation TextFieldWithHighlighting
@synthesize backgroundStyle = _backgroundStyle;
- (NSBackgroundStyle) backgroundStyle {
    return _backgroundStyle;
}
@synthesize secretBackgroundStyle = _secretBackgroundStyle;
- (NSBackgroundStyle) secretBackgroundStyle {
    return _backgroundStyle;
}

- (void)setBackgroundStyle:(NSBackgroundStyle)backgroundStyle {

}

- (void) setSecretBackgroundStyle:(NSBackgroundStyle)secretBackgroundStyle {
    _backgroundStyle = secretBackgroundStyle;
    self.needsDisplay = YES;
}


- (void)drawRect:(NSRect)dirtyRect {
    if(_backgroundStyle == NSBackgroundStyleDark) {
        if(self.originalTextColor == nil) {
            self.originalTextColor = self.textColor;
        }
        self.textColor = [NSColor whiteColor];
    } else {
        if(self.originalTextColor) {
            self.textColor = self.originalTextColor;
        } else {
            self.textColor = [NSColor colorWithCalibratedRed:0x40/255.0 green:0x40/255.0 blue:0x41/255.0 alpha:0xFF/255.0];
        }
    }
    [super drawRect:dirtyRect];

}

@end

它仅对我有用,因为我明确地处理了更改其选择和AFAIK的行,而我并没有依赖于操作系统为我进行更改。如果我能再做一次,我只会要求使用系统突出显示颜色,在这种情况下,我将免费获得此功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有焦点时如何突出显示DataGridViewComboBoxCell?

来自分类Dev

不在焦点时更改TextBox的背景

来自分类Dev

单击时防止文本突出显示

来自分类Dev

当表格失去焦点时,NSTableView突出显示颜色

来自分类Dev

失去焦点时更改显示文本

来自分类Dev

NSTableView行-突出显示时更改颜色

来自分类Dev

突出显示时如何更改UIControl的大小?

来自分类Dev

突出显示文本时更改光标背景

来自分类Dev

突出显示元素时更改链接的颜色

来自分类Dev

更改焦点时防止微调框下拉菜单消失

来自分类Dev

Raphael JS-单击时防止文本突出显示

来自分类Dev

选择快速时防止按钮图像突出显示4

来自分类Dev

如何防止鼠标单击时突出显示InlineUIContainer?

来自分类Dev

不在焦点时隐藏元素

来自分类Dev

如何在Qt按钮中更改焦点颜色(突出显示颜色)?

来自分类Dev

在Microsoft Word / Excel中焦点更改时如何保持所选文本突出显示

来自分类Dev

更改的突出显示颜色

来自分类Dev

突出显示UITableViewCell时更改UILabel textColor吗?

来自分类Dev

我想在每次更改文本时突出显示MutiAutoCompleteTextView的语法

来自分类Dev

选中或突出显示时全局更改 UIBarButtonItem 文本颜色

来自分类Dev

当不在焦点范围内时,Firebase云消息传递不会显示通知

来自分类Dev

防止元素在更改浏览器选项卡时失去CSS“焦点”

来自分类Dev

不在Java上时保持焦点

来自分类Dev

不在焦点时隐藏 textarea 字段

来自分类Dev

如何在CSS中使用焦点选择器更改文本框的突出显示颜色

来自分类Dev

NSTableview更改突出显示颜色

来自分类Dev

突出显示文字并更改颜色

来自分类Dev

如何使JSpinner对象的全部内容突出显示,以便在获得焦点时不需要删除用户输入?

来自分类Dev

单击元素时,将焦点放在输入字段上,除非容器中的某些文本已突出显示

Related 相关文章

  1. 1

    有焦点时如何突出显示DataGridViewComboBoxCell?

  2. 2

    不在焦点时更改TextBox的背景

  3. 3

    单击时防止文本突出显示

  4. 4

    当表格失去焦点时,NSTableView突出显示颜色

  5. 5

    失去焦点时更改显示文本

  6. 6

    NSTableView行-突出显示时更改颜色

  7. 7

    突出显示时如何更改UIControl的大小?

  8. 8

    突出显示文本时更改光标背景

  9. 9

    突出显示元素时更改链接的颜色

  10. 10

    更改焦点时防止微调框下拉菜单消失

  11. 11

    Raphael JS-单击时防止文本突出显示

  12. 12

    选择快速时防止按钮图像突出显示4

  13. 13

    如何防止鼠标单击时突出显示InlineUIContainer?

  14. 14

    不在焦点时隐藏元素

  15. 15

    如何在Qt按钮中更改焦点颜色(突出显示颜色)?

  16. 16

    在Microsoft Word / Excel中焦点更改时如何保持所选文本突出显示

  17. 17

    更改的突出显示颜色

  18. 18

    突出显示UITableViewCell时更改UILabel textColor吗?

  19. 19

    我想在每次更改文本时突出显示MutiAutoCompleteTextView的语法

  20. 20

    选中或突出显示时全局更改 UIBarButtonItem 文本颜色

  21. 21

    当不在焦点范围内时,Firebase云消息传递不会显示通知

  22. 22

    防止元素在更改浏览器选项卡时失去CSS“焦点”

  23. 23

    不在Java上时保持焦点

  24. 24

    不在焦点时隐藏 textarea 字段

  25. 25

    如何在CSS中使用焦点选择器更改文本框的突出显示颜色

  26. 26

    NSTableview更改突出显示颜色

  27. 27

    突出显示文字并更改颜色

  28. 28

    如何使JSpinner对象的全部内容突出显示,以便在获得焦点时不需要删除用户输入?

  29. 29

    单击元素时,将焦点放在输入字段上,除非容器中的某些文本已突出显示

热门标签

归档