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
直到现在。也许这里有人有提示?
答
我终于可以通过设置行视图的selectionHighlightStyle
来覆盖蓝色的选择颜色。在我的NSTableRowView
子类中的以下代码做了诀窍:
- (NSTableViewSelectionHighlightStyle)selectionHighlightStyle
{
return NSTableViewSelectionHighlightStyleNone;
}
- (void)drawSelectionInRect:(NSRect)dirtyRect
{
[[NSColor redColor] set];
NSRectFill(dirtyRect);
}
你有没有得到这个地方?我有一个与NSOutlineView类似的问题。在我的情况下,我可以通过将高亮样式更改为源列表来解决该问题。我也在一个非常简单的测试项目中重新创建了它,所以我怀疑这是一个Apple bug并且已经提交了一个Radar。 – 2014-12-02 12:29:35
我也在我自己的应用程序中运行这个bug,它使用基于NSOutlineView的视图。我唯一能补充的信息是,至少对我的应用来说,这个错误只发生在优胜美地,而不是小牛。加文,如果你的雷达仍然有这个测试项目,你会介意在某处发布一个副本吗? – 2015-01-26 21:27:59
任何解决方案? – SpaceDog 2015-03-05 04:56:16