【问题标题】:How to prevent right-click textfield renaming in NSOutlineView如何防止在 NSOutlineView 中右键单击文本字段重命名
【发布时间】:2021-04-05 04:35:02
【问题描述】:

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

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

但是,当我在文本字段外部单击时,它可以在不将文本字段设置为编辑模式的情况下工作:

【问题讨论】:

    标签: swift macos nstableview nstextfield nsoutlineview


    【解决方案1】:

    我有一个类似的 NSTableView 支持右键单击以显示菜单,但字段也可以直接编辑。我看了看为什么/如何在我的情况下编辑似乎不是问题,我将行为范围缩小到在我的 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 子类中添加类似上述的行,看看它是否能解决问题!

    【讨论】:

    • 啊!通过在大纲视图上设置菜单并使用委托方法menuNeedsUpdate 工作。非常感谢?。
    猜你喜欢
    • 2021-04-15
    • 2013-07-21
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多