4

背景:

我正在 Cocoa/Objective-C 中构建一个基于视图的 NSTableView-esque 控件,它提供了 UITableView 的易用性,能够在 Interface Builder 中布局视图,而不是尝试继承 NSCell。它的资源也很聪明,因为它采用了类似于 UITableView 的可重用单元范式。当然,这一切都是在 NSScrollView 中完成的。

我已经弄清楚了大部分棘手的视图交换,并且正在工作。滚动时,如果视图被完全裁剪,它会被添加到未使用的视图池中。类似地,如果一个未显示的视图进入可视区域,它会尝试从未使用的池中获取视图,如果没有可用的视图,它会从持有视图原型的 nib 中创建一个新视图。

确实存在类似的解决方案,但我喜欢修补并喜欢自己实施它:)。但是,我不知道处理此问题的解决方案,我需要一些建议!

问题:

例如,假设每个视图都包含一个文本字段。如果正在编辑文本字段,并且用户开始滚动,我希望该单元格不会被释放到池中,以便它不会“失去焦点”或“将焦点”转移到新显示的视图重用已发布的。是否有一种智能方法可以将视图标记为正在编辑,而无需创建自定义视图的程序员拦截事件并将其标记为这样?

感谢您的帮助!

4

1 回答 1

2

您的视图控制器可以符合NSEditorRegistration非正式协议。它旨在处理这个问题。

于 2011-06-26T04:06:16.187 回答