是否有一种智能的方法来处理NSCrollView中的视图交换/重用



背景:

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

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

类似的解决方案确实存在,但我喜欢四处修修补补,并喜欢自己实现:)。然而,我不知道有什么解决方案可以解决这个问题,我需要一些建议!

问题:

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

感谢您的帮助!

您的视图控制器可以符合NSEditorRegistration非正式协议。它的设计正是为了处理这个问题。

最新更新