Objective c 如何打开一个窗口并选择该窗口并使其处于焦点?
我正在尝试使用以下代码打开NSC窗口:Objective c 如何打开一个窗口并选择该窗口并使其处于焦点?,objective-c,cocoa,macos,nswindow,nswindowcontroller,Objective C,Cocoa,Macos,Nswindow,Nswindowcontroller,我正在尝试使用以下代码打开NSC窗口: NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"]; [window showWindow:nil]; 窗口打开正常,但上一个窗口仍然是主窗口并处于焦点。我尝试了以下代码来强制主窗口,但它不起作用。窗口仍然有一个禁用的标题栏,不接受关键事件等 [self.window makeKeyAndOrderFront:self]
NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"];
[window showWindow:nil];
窗口打开正常,但上一个窗口仍然是主窗口并处于焦点。我尝试了以下代码来强制主窗口,但它不起作用。窗口仍然有一个禁用的标题栏,不接受关键事件等
[self.window makeKeyAndOrderFront:self];
[self.window makeMainWindow];
我似乎能够使上一个窗口失去焦点的唯一方法是在调用showWindow:with[[NSApp mainWindow]close]后关闭窗口
有什么想法吗?
makekey和derfront:
是最好的选择。您确定self.window
和window
引用了同一个对象吗?我通过将WindowController分配给nib文件所有者,而不是在nib中有一个单独的NSWindowController对象,解决了这个问题。谢谢,但它仍然不起作用。我添加了[WindowMakeKeyandDerfront:self];直接在橱窗后打电话:但还是不起作用。我应该在其他地方调用它吗?MakeKeyandDerfront:
是正确的方法。不管你叫它什么地方。还有别的问题。例如,主窗口可能是模态的,或者某些东西拒绝放弃第一响应者状态。是的,nib中存在问题,请参阅我的答案以获得解决方案。这与showWindow一起工作良好:一旦nib设置正确。@TylerA。下面是我的答案不确定为什么我在这里得到了-1,有人告诉我如何改进这个问题吗?我想补充一点,我忘了在Interface Builder中将窗口插座连接到我的NSWindow。这导致代码对我不起作用,所以对于任何阅读此代码的人,请不要忘记连接窗口插座。一个简单的错误,但是一个可以让你沮丧很久的错误