【发布时间】:2021-12-04 17:10:26
【问题描述】:
我在 Interface Builder 中注意到,如果我想单击或从 Library 面板中拖动,我只需单击一次,即使 Library 面板没有当前焦点。
我正在尝试构建一个行为相似的面板。
有没有什么简单的方法可以让 NSTableView 接受点击,即使窗口没有焦点?
谢谢。
【问题讨论】:
标签: objective-c cocoa nstableview nswindow
我在 Interface Builder 中注意到,如果我想单击或从 Library 面板中拖动,我只需单击一次,即使 Library 面板没有当前焦点。
我正在尝试构建一个行为相似的面板。
有没有什么简单的方法可以让 NSTableView 接受点击,即使窗口没有焦点?
谢谢。
【问题讨论】:
标签: objective-c cocoa nstableview nswindow
好的,我找到了答案。在 awakeFromNib 内部,我称之为: [self setBecomesKeyOnlyIfNeeded:YES];
它似乎可以解决问题。它与 Interface Builder 稍有不同,其中 Panel 实际上只需单击一下即可同时获得焦点,但这样做正是我想要的。
【讨论】:
acceptsFirstMouse { return YES;}
NSOutlineView 上覆盖acceptsFirstMouse 对我没有任何影响。这个解决方案奏效了。
您的视图应覆盖-acceptsFirstMouse: 以返回YES(或评估传递给您的事件以确定返回什么)。当然,您必须继承 NSTableView 才能做到这一点。
【讨论】: