【问题标题】: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