【问题标题】:NSOutlineView select with the first clickNSOutlineView 选择第一次单击
【发布时间】:2013-03-25 20:58:56
【问题描述】:

我有一个带有 NSOutlineView 的 NSPanel 来显示我的数据。我想在 NSOutlineView 内第一次单击选择一行,即使面板不在焦点(即不是关键窗口)我有一个允许选择的委托,并且我已经覆盖了 NSOutlineView 类以覆盖acceptsFirstMouse:方法,但是我无法获得第一次点击选择。

我检查了 mouseDown 事件,当面板是和不是关键窗口时,它触发没有任何问题(在我的类中覆盖)。但是当panel不是key时,NSOutlineViewDelegate方法shouldSelectItem:不会被调用。

我错过了什么/做错了什么?

【问题讨论】:

    标签: objective-c xcode macos


    【解决方案1】:

    您只需要子类化您的 NSTableOutlineView 并覆盖:

    - (BOOL)needsPanelToBecomeKey
    

    返回 NO。

    NSView 类引用状态:

    被子类覆盖以确定接收器是否需要它的 面板,否则可能会避免成为关键,成为关键 窗口,以便它可以处理键盘输入和导航。

    讨论

    这样的子类也应该覆盖acceptsFirstResponder 返回 YES。

    此方法也用于键盘导航。它确定一个 鼠标单击应该将焦点放在视图上(使其成为第一响应者)。 当您单击某些视图时,它们会希望获得键盘焦点,例如 示例文本字段。其他视图只有在您使用选项卡时才能获得焦点 例如,按钮。你不希望焦点从 正在编辑的文本字段只是因为您单击了 复选框。

    来源:Apple documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      相关资源
      最近更新 更多