我有一个带有NSOutlineView的NSPanel来显示我的数据。我想在NSOutlineView中选择一个第一次单击的行,即使面板不在焦点上(即不是关键窗口)我有一个允许选择的委托,我已经重写了NSOutlineView类来覆盖acceptFirstMouse:方法,但是我无法获得第一次点击选择。
我检查了mouseDown事件,当面板显示并且不是关键窗口时,它会在没有任何问题的情况下触发(在我的类中覆盖)。但是当面板不是键时,NSOutlineViewDelegate方法应该选择ItemItem:不被调用。
我错过了什么/做错了什么?
答案 0 :(得分:2)
您只需要对NSTableOutlineView进行子类化并覆盖:
- (BOOL)needsPanelToBecomeKey
返回NO。
NSView类引用状态:
由子类重写以确定接收器是否需要它 面板,否则可能会成为关键,成为关键 窗口,以便它可以处理键盘输入和导航。
<强>讨论强>
这样的子类也应该覆盖acceptFirstResponder 返回YES。
此方法也用于键盘导航。它确定是否 鼠标单击应该将焦点放在视图上(使其成为第一响应者)。 有些视图会在您点击它们时获得键盘焦点 示例文本字段。其他视图只有在您选中时才会获得焦点 它们,例如,按钮。你不希望焦点转移到 只是因为你点击了一个正在进行编辑的文本字段 复选框。