Objective c 如何使NSView立即获得焦点/第一响应者以接受鼠标下降事件?

Objective c 如何使NSView立即获得焦点/第一响应者以接受鼠标下降事件?,objective-c,cocoa,nstableview,nswindow,Objective C,Cocoa,Nstableview,Nswindow,我有一个应用程序加载了两个单独的NSWindow 每个窗口都有一张小桌子,里面有两个项目 这是我似乎无法解决的问题--> 如果窗口#1处于活动/聚焦状态,我可以正常单击表中的各个行。但是如果我想在窗口2内单击表中的行,我必须单击表两次。第一次单击以使窗口2处于活动/聚焦状态,最后第二次单击以实际选择行 如何在一次单击中选择NSTableView中的行(无论它们的窗口是否处于焦点状态)?问题是当您的第一个窗口处于活动状态时,因为它是第一个响应者,所以很明显,在您选择它之前,您的tableview将

我有一个应用程序加载了两个单独的NSWindow

每个窗口都有一张小桌子,里面有两个项目

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

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


如何在一次单击中选择NSTableView中的行(无论它们的窗口是否处于焦点状态)?

问题是当您的第一个窗口处于活动状态时,因为它是第一个响应者,所以很明显,在您选择它之前,您的tableview将是window1的下一个响应者。但对于第二个窗口,您的第一个响应者将是window2。因此,您必须双击该表两次,因为first responder设置为window2,它设置为table 2,以便生成下一个响应程序。如果要单击并选择window2的表,则可以通过绑定或编程方式进行操作。

创建NSTableView的IBOutlet,如下所示:

IBOutlet NSTableView* yourTable;
把它绑在你的桌子上

然后使用:

[window2 makeFirstResponder: yourTable];

我对NSTableView进行了子分类

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

它适用于我的文本视图。希望你也一样。你有两扇独立的窗户吗?您是说只需单击表视图行一次?是的,我有两个单独的窗口,一个窗口中有一个NSTextView。如果我不使用上述方法,NSTextView只需点击2次即可获得焦点。但在成为第一响应程序后,它只需单击一次即可获得焦点。[[self window]setInitialFirstResponder:(NSView*)tableView2];[[self window]makeFirstResponder:(NSView*)tableview 2];像这样试试你试过这个密码吗?你到底把它放在哪里?设置第一响应者似乎不起作用。。当我仍然必须在表行上单击两次而不是一次时..您必须在启动第二个窗口时放置它