【问题标题】:Change text editing background color in NSTableView with dark background在具有深色背景的 NSTableView 中更改文本编辑背景颜色
【发布时间】:2016-06-25 14:20:45
【问题描述】:

我有一个基于视图的 NSTableView,其背景颜色为深色。 Cocoa 决定,如果文本是白色的,文本字段、弹出按钮等中的文本可读性更好。

这本身很好,我只有在编辑文本字段中的文本时,编辑时的背景颜色是白色的文本。

有没有一种简单的方法可以轻松解决这个问题(编辑时的深色背景或编辑时的深色文本),还是我需要使用字段编辑器?

更新

经过一番折腾,我发现将所有单元格视图文本字段上的文本颜色设置为黑色会在编辑时将文本颜色更改为黑色。但是它不会影响表格视图中显示的文本颜色。

我不确定这是否是一个错误,但它对我来说似乎是一个错误。

【问题讨论】:

  • 今天试过了,bug 可能已经修复了。当所有单元格都具有默认文本颜色并且只有表格本身具有黑色背景颜色时,它可以正常工作。唯一的缺点是 IB 中单元格的占位符文本仍然是黑色的,所以你再也看不到它们了。对我来说这没问题。

标签: objective-c cocoa nstableview


【解决方案1】:

您是否尝试覆盖 didSelectRowAtIndexPath 和 didDeselectRowAtIndexPath 以自己更新文本颜色?

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = (UITableViewCell *) [tableView cellForRowAtIndexPath:indexPath];
    if([cell isEditing]) {
        cell.titleLabel.textColor = [UIColor blackColor];
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = (UITableViewCell *) [tableView cellForRowAtIndexPath:indexPath];
    if([cell isEditing]) {
        cell.titleLabel.textColor = [UIColor whiteColor];
    }
}

此代码适用于 iOS 平台,但应该很容易适应 OSX 平台。

【讨论】:

  • 这并没有直接解决我的问题,但它为我指明了正确的方向。谢谢!
  • @guitarflow 到底正确的方向是什么? :)
猜你喜欢
  • 1970-01-01
  • 2018-12-25
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 2020-06-12
  • 2011-04-29
相关资源
最近更新 更多