【发布时间】:2014-04-17 15:43:26
【问题描述】:
我在NSTableView 中有一些可编辑的单元格。
我通过双击一个单元格来输入它。我在窗口上有其他按钮。任何时候我点击一个按钮,这都会终止单元格编辑,因为我在单元格中什么都没有,并且 NSTableView 不会刷新,即使我调用[myTableView reloadData]。
一种可能的解决方法是在我开始在 NSTableView 中进行单元格编辑后立即禁用所有按钮,但我不知道如何检测到这一点。
我可以在输入内容后立即捕获内容:
(void)controlTextDidBeginEditing:(NSNotification *)notification
但这不是我想要的,只是太晚了,因为它只有在用户输入单元格编辑器后才会被调用。
我想准确检测单元格编辑何时开始,即使尚未输入任何内容。
我看过一些可能有结果的帖子:
最好先让窗口成为firstResponder(这样 将 firstReponder 远离焦点区域),如果失败, 求助于 NSWindow 上粗糙的“endEditingFor:”方法。
但这对我来说只是希腊语。非常感谢任何帮助。
【问题讨论】:
-
表格视图是基于单元格还是基于视图?
-
我也有这个问题,即检测何时开始编辑。我发现的解决方案都不起作用(使用 10.11 SDK,为 10.6 构建):cocoabuilder.com/archive/cocoa/142689-nstableview-editing.html 和 TN (developer.apple.com/library/content/qa/qa1551/_index.html) 中的建议都没有。它们要么来得太早,当编辑器还没有激活时 (
shouldEditTableColumn),要么来得太晚 (TN),要么永远不会被调用(NSTextFieldCell子类中的editWithFrame)。
标签: nstableview nsoutlineview nscell nstableviewcell