NSTableView拖放选定的行覆盖蓝色的行布局

问题描述:

我有一个NSTableView,显示每行中的一些图像和文本。我为NSTableView启用了多个选择。我启用拖动& Drop为TableView排序或导出图像。 现在我发现,当我选择多个行并将它们拖到TableView上时,整行变为蓝色并保持蓝色(选中状态)。无法看到文字和图像。 在XCode中,我收到此消息:NSTableView拖放选定的行覆盖蓝色的行布局

布局在调用后仍然需要更新 - [NSTableRowView布局]。 NSTableRowView或其超类中的一个可能会覆盖 - 布局而不调用super。或者,在更新它的过程中,某些东西可能会弄脏布局。这两个都是Cocoa Autolayout中的编程错误。如果一些预Cocoa Autolayout类有一种称为布局的方法,前者很可能会出现,但它应该是固定的。

该问题仅适用于多选。当启用单个选择它工作正常。

这里有三个图片来演示该问题:

图片2:当拖动超过它得到完整的蓝色;覆盖其它布局的构成

http://ekiwi.de/temp/stackoverflow/original2.png

图3:在拖动后也没找到谷歌搜索2天任何解决方案或暗示仍然完全蓝色

http://ekiwi.de/temp/stackoverflow/original3.png

直到现在。也许这里有人有提示?

+1

你有没有得到这个地方?我有一个与NSOutlineView类似的问题。在我的情况下,我可以通过将高亮样式更改为源列表来解决该问题。我也在一个非常简单的测试项目中重新创建了它,所以我怀疑这是一个Apple bug并且已经提交了一个Radar。 – 2014-12-02 12:29:35

+2

我也在我自己的应用程序中运行这个bug,它使用基于NSOutlineView的视图。我唯一能补充的信息是,至少对我的应用来说,这个错误只发生在优胜美地,而不是小牛。加文,如果你的雷达仍然有这个测试项目,你会介意在某处发布一个副本吗? – 2015-01-26 21:27:59

+0

任何解决方案? – SpaceDog 2015-03-05 04:56:16

我终于可以通过设置行视图的selectionHighlightStyle来覆盖蓝色的选择颜色。在我的NSTableRowView子类中的以下代码做了诀窍:

- (NSTableViewSelectionHighlightStyle)selectionHighlightStyle 
{ 
    return NSTableViewSelectionHighlightStyleNone; 
} 

- (void)drawSelectionInRect:(NSRect)dirtyRect 
{ 
    [[NSColor redColor] set]; 
    NSRectFill(dirtyRect); 
}