我在自定义ImageAndTextCell
中使用Apple的一个教程中略微修改过的NSOutlineView
。对于那些不熟悉它的人来说,它是一个NSTextFieldCell
子类,可以在单元格文本的左侧绘制图像。
我有一个像iTunes一样的源列表,包含组行和下面的项目。编辑单元格的值时,焦点环仅部分绘制组的前两行(见下文)。焦点环的前三分之一绘制在第一行,而底部三分之一绘制在第二行。
后续行绘制正常(参见下面的第三行),它们都具有相同的图像。可能是什么导致了这个? (请参阅下面的更新3 。核心动画导致此行为)
更新1
我在ImageAndTextCell
中几乎注释掉了所有自定义代码,并没有区别(只有init
,dealloc
,copyWithZone
和image
获取者塞特尔仍然)。
更新2
我几乎评论了NSOutlineView
子类中的所有代码和我的委托类,以及保留了Update 1中所有代码的注释 - 仍然是奇怪的结果。第三行不再总是完美的,但是当我删除了各种函数时,焦点rect的部分被移动了。
此外,我遇到问题的项目是我的两个大纲组中的第二个。重命名第一组中的唯一项目时,焦点矩形在每一步都是完美的。具有讽刺意味的是,这是在我的应用程序的标准操作期间无法重命名的那个。
接下来,我将查看NIB中的所有设置,看看是否有什么东西可能会被打破。
更新3
我能够通过为我窗口中的每个视图全面禁用Core Animation来修复它。现在的问题是:如何在不使我的焦点看起来很糟糕的情况下重新启用Core Animation?
答案 0 :(得分:0)
在转移到Lion之前没有解决这个问题,我现在可以高兴地报告切换到基于视图的NSOutlineView
修复了这个问题。奇怪的是,如果你在IB中打开大纲视图的图层支持,则会产生其他问题。然而,在取消选中这些框之后,界面仍然会动画(并且支持比基于单元格的轮廓视图更丰富的动画)。