2013-03-25 205 views
1

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

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

我在想什么/做错了什么?

回答

2

你只需要继承你的NSTableOutlineView并重写:

- (BOOL)needsPanelToBecomeKey 

返回NO。

的NSView类引用状态:

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

讨论

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

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

来源:Apple documentation

+0

的感谢!像魅力一样工作。 – Bikush 2013-03-25 13:08:39

相关问题