首次点击即可选择NSOutlineView

时间:2013-03-25 12:46:39

标签: objective-c xcode macos

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

我检查了mouseDown事件,当面板显示并且不是关键窗口时,它会在没有任何问题的情况下触发(在我的类中覆盖)。但是当面板不是键时,NSOutlineViewDelegate方法应该选择ItemItem:不被调用。

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

1 个答案:

答案 0 :(得分:2)

您只需要对NSTableOutlineView进行子类化并覆盖:

- (BOOL)needsPanelToBecomeKey

返回NO。

NSView类引用状态:

  

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

     

<强>讨论

     

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

     

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

来源:Apple documentation