我通过调用
来显示我的主窗口[window makeKeyAndOrderFront:self];
[NSApp activateIgnoringOtherApps:YES];
[window setIsVisible:YES];
[window display];
可以工作,但是在调用之后不会将窗口设置到关键窗口。我必须等待“一段时间”,直到[NSApp keyWindow]
返回实际的window
。
我现在想知道,这需要多长时间,如何强制窗口立即成为关键窗口?
答案 0 :(得分:0)
我认为makeKeyAndOrderFront
不是同步调用可能有充分的理由,即NSApplication
需要处理的多个窗口和对象可能存在协调,所以迫使窗口立刻成为关键可能不受Cocoa的支持。但是,这可能不是问题,具体取决于您要解决的问题。
现在,我的猜测是你的一些方法取决于窗口是关键的,而且目前它们没有正确发生,因为窗口不会立即变为key
。但是,您可以实现NSWindowDelegate
协议,将自己设置为窗口委托,并覆盖- (void)windowDidBecomeKey:(NSNotification *)notification
方法以找出窗口何时成为密钥。这也应该是一个全局通知,以防更适合您。