如何使 NSView 立即获得焦点/第一响应者以接受鼠标关闭事件



我有一个应用程序,加载了 2 个单独的 NSWindow。

每个窗口都有一个小表,其中包含两个项目。

这是我似乎无法解决的问题-->

如果窗口#1处于活动状态/焦点,我可以正常单击表中的各个行。但是,如果我想单击窗口 #2 中表中的行,则必须单击该表两次。第一次单击以使窗口 #2 处于活动/焦点状态,最后第二次单击以实际选择该行。

如何只需单击一下即可选择NSTableViews中的行(无论它们的窗口是否聚焦)?

我子类化了NSTableView。

-(BOOL)acceptsFirstMouse:(NSEvent *)theEvent {
   return YES;
}

将 NSTableView 的 IBOutlet 创建为:

IBOutlet NSTableView* yourTable;

将其绑定到表。

然后使用:

[window2 makeFirstResponder: yourTable];

问题是当您的第一个窗口处于活动状态时,因为它是第一个响应者,因此很明显您的表视图将是 window1 的下一个响应者,直到您选择它。但是对于第二个窗口,您的第一个响应者将是窗口2。因此,您必须双击表格两次,因为第一个响应者设置为窗口 2,并且它设置为表 2 以制作下一个响应者。如果要单击并选择窗口2表,则可以通过绑定或编程方式进行操作。

最新更新