核心动画导致部分源列表焦点响铃

时间:2011-04-21 18:54:07

标签: objective-c macos core-animation nsoutlineview nscell

我在自定义ImageAndTextCell中使用Apple的一个教程中略微修改过的NSOutlineView。对于那些不熟悉它的人来说,它是一个NSTextFieldCell子类,可以在单元格文本的左侧绘制图像。

我有一个像iTunes一样的源列表,包含组行和下面的项目。编辑单元格的值时,焦点环仅部分绘制组的前两行(见下文)。焦点环的前三分之一绘制在第一行,而底部三分之一绘制在第二行。

后续行绘制正常(参见下面的第三行),它们都具有相同的图像。可能是什么导致了这个? (请参阅下面的更新3 。核心动画导致此行为)

enter image description here enter image description here enter image description here

更新1

我在ImageAndTextCell中几乎注释掉了所有自定义代码,并没有区别(只有initdealloccopyWithZoneimage获取者塞特尔仍然)。

更新2

我几乎评论了NSOutlineView子类中的所有代码和我的委托类,以及保留了Update 1中所有代码的注释 - 仍然是奇怪的结果。第三行不再总是完美的,但是当我删除了各种函数时,焦点rect的部分被移动了。

此外,我遇到问题的项目是我的两个大纲组中的第二个。重命名第一组中的唯一项目时,焦点矩形在每一步都是完美的。具有讽刺意味的是,这是在我的应用程序的标准操作期间无法重命名的那个。

接下来,我将查看NIB中的所有设置,看看是否有什么东西可能会被打破。

更新3

我能够通过为我窗口中的每个视图全面禁用Core Animation来修复它。现在的问题是:如何在不使我的焦点看起来很糟糕的情况下重新启用Core Animation?

1 个答案:

答案 0 :(得分:0)

在转移到Lion之前没有解决这个问题,我现在可以高兴地报告切换到基于视图的NSOutlineView修复了这个问题。奇怪的是,如果你在IB中打开大纲视图的图层支持,则会产生其他问题。然而,在取消选中这些框之后,界面仍然会动画(并且支持比基于单元格的轮廓视图更丰富的动画)。