首页 > 解决方案 > NSOutlineView:有时一行是不可编辑的(只是哔哔声)

问题描述

我有一个基于视图的数据源NSOutlineView和委托配置。它由两列自定义NSTableCellView类组成。

大纲视图中的条目可通过选择一行并按Return键进行编辑。一切都是根据文档设置的,并且大部分时间都可以正常工作。

但是,有时当我Return在选择一行时按下,单元格的文本字段不会进入编辑模式。它只是发出哔哔声。

我仍然可以通过“长按”文本字段进入编辑模式。出于某种原因,Return大纲视图有时会以不同的方式处理关键事件。

我捕获了两个堆栈跟踪:

#1 按预期工作:

在职的

您可以从keyDown()事件中看到最终使单元格的文本字段成为第一响应者。

#2 哔哔声

嘟

我在 处设置了一个断点,NSBeep您可以看到这次密钥甚至采用了不同的路径。

我怀疑可能是大纲视图或底层的内部状态NSTableView混淆了......

我怎样才能从这里解决这个问题?大纲视图采取哪些步骤来确定按下 Return 键后是否可以编辑行?

更新

我做了更多调试(感谢@Willeke 提供有关断点的提示)。我设法解决了这个问题:

现在的问题是为什么nil有时是下一个关键视图?我单击大纲视图的行,因此它确实具有焦点/被选中...

标签: cocoanstableviewnsoutlineviewfirst-respondernstablecellview

解决方案


推荐阅读