如何防止 right-click 文本字段在 NSOutlineView 中重命名

How to prevent right-click textfield renaming in NSOutlineView

我有一个 NSOutlineView,其中可以通过按 return 或使用右键单击来编辑文本字段。我还根据单击的行覆盖 menu(for event: NSEvent) -> NSMenu? 到菜单

当我右键单击文本字段时,它会按预期打开正确的菜单,但也会使文本字段进入编辑模式。有没有办法处理这种行为?

但是,当我在文本字段外部单击时,无需将文本字段设置为编辑模式即可工作:

我有一个类似的NSTableView,支持右键显示菜单,但字段也可以直接编辑。我看了一下 why/how 在我的情况下编辑似乎不是问题,我将行为缩小到我的 NSTableView 子类中存在这行代码:

// This trick convinces the accessibility system to bother checking whether
// we have a menu to export to e.g. VoiceOver.
[self setMenu:[[NSMenu alloc] init]];

正如您从评论中看到的那样,“设置空菜单”的基本原理与避免您所看到的编辑行为的原因不同,但它似乎也有修复的副作用那。

所以,请尝试在您的 NSOutlineView 子类中添加像上面这样的一行,看看它是否能解决问题![​​=11=]