启用NSTableView导致“使用键盘导航”混乱

问题描述 投票:0回答:1

我有NSTableView,我在其中使用

tableView(tableView:shouldTypeSelectFor:withCurrentSearch:) -> Bool

使用这样的SPACE键委托选择某些行的方法

func tableView(_ tableView: NSTableView,
               shouldTypeSelectFor event: NSEvent,
               withCurrentSearch searchString: String?) -> Bool {
    if event.charactersIgnoringModifiers == " " {
        // Perform action on currently selected row(s)
    }
    return false
}

这很好,但是当设置为

Preferences > Keyboard > Shortcuts > "Use keyboard navigation to move focus between controls"

启用后,按SPACE键后,表格视图完全失去焦点。如果之后检查响应者链,则可以确定焦点移回到了窗口。

打开此设置的另一个副作用是,如果我在所选表格视图单元格中具有一个复选框(NSButton),则在单击SPACE时将自动调用其动作。

该设置明确指出它仅将焦点移到TABSHIFT+TAB上,而不改变控件的工作方式。

为什么会这样?我可以至少部分禁用应用程序的表视图的此行为吗?

macos cocoa nstableview appkit
1个回答
0
投票
几乎失去了我的最后一根头发,这是解决问题的方法

    确保所有单元格子视图的refusesFirstResponder设置为false
  • 现在,表视图的第一响应者状态不会丢失。
  • © www.soinside.com 2019 - 2024. All rights reserved.