尝试使NSWindow成为关键窗口时的时间问题

时间:2012-01-11 18:01:28

标签: cocoa nswindow

我通过调用

来显示我的主窗口
[window makeKeyAndOrderFront:self];
[NSApp activateIgnoringOtherApps:YES];
[window setIsVisible:YES];
[window display];

可以工作,但是在调用之后不会将窗口设置到关键窗口。我必须等待“一段时间”,直到[NSApp keyWindow]返回实际的window

我现在想知道,这需要多长时间,如何强制窗口立即成为关键窗口?

1 个答案:

答案 0 :(得分:0)

我认为makeKeyAndOrderFront不是同步调用可能有充分的理由,即NSApplication需要处理的多个窗口和对象可能存在协调,所以迫使窗口立刻成为关键可能不受Cocoa的支持。但是,这可能不是问题,具体取决于您要解决的问题。

现在,我的猜测是你的一些方法取决于窗口是关键的,而且目前它们没有正确发生,因为窗口不会立即变为key。但是,您可以实现NSWindowDelegate协议,将自己设置为窗口委托,并覆盖- (void)windowDidBecomeKey:(NSNotification *)notification方法以找出窗口何时成为密钥。这也应该是一个全局通知,以防更适合您。

有关详细信息,请查看http://developer.apple.com/library/mac/#documentation/cocoa/reference/NSWindowDelegate_Protocol/Reference/Reference.html

上的Apple文档