4

虽然我知道这个问题的解决方案,但如果有人可以向我解释这个解决方案,我很感兴趣。我也想把它拿出来,因为我在网上找不到任何关于这个问题的提及,而且我花了几天时间才找到了几个小时。我有一个 NSTableView 在重绘及其选择方面表现得很奇怪。问题看起来像这样:

表格内容淡入,而不是在它出现在屏幕上时立即出现。滚动内容时,新出现的行也会淡入。当您进行选择(单个或多个)并将其滚动到屏幕外,然后进行另一个选择(应该替换,而不是添加到第一个选择)时,第一个选择未正确清除。如果您滚动回它,它仍然存在,除了您的新选择。这是一个显示更新问题,而不是选择问题 - 即您的新选择有效,只是显示错误。

我通过绑定到的 NSArrayController、底层数组、排序、所有连接和设置等来跟踪这一点,但所有这些都与它无关。

解决问题的方法是:在 View Effects(最右侧)Inspector 中,取消选中 Window 主视图的“Core Animation Layer”。

谁能解释这里发生了什么,也许可以改进解决方案?

4

1 回答 1

2

它看起来像 Core Animation 并且NSTableView相处得不太好。“褪色”效果是核心动画工作方式的副产品。当您在一个视图中有核心动画时,它也会在该视图的所有子视图中启用。

除非绝对必要,否则我不建议在 Mac 上使用核心动画,因为某些界面元素(例如NSTextViewNSTableView)与它不兼容。iOS 对表格视图等使用核心动画有更好的支持,主要是因为它在设计时考虑了核心动画。

我知道一些更简单的 UI 元素是兼容的(例如,NSTextField和)。NSButton

如果您绝对需要在窗口的其余部分中使用核心动画,请将所有其他视图放在内容视图的子视图中,同时将表格视图直接留在内容视图中。然后,您可以在另一个视图中启用核心动画。

评论者,请随时添加到兼容和不兼容的列表中。

于 2011-07-10T16:13:27.417 回答