我工作的一个子类NSWindow
和我遇到一些奇怪的行为,让我怀疑我的一些假设有关Windows在Mac OS X中是如何工作的NSApp隐藏了什么:实际上是否使用NSWindow实例?
时[[NSApplication sharedApplication] hide: self]
叫什么恰恰发生在NSWindow
实例?
所有不返回NO的窗口到-(BOOL)canHide
从屏幕上消失。然后,当应用程序变为活动状态或调用[NSApplication sharedApplication] unhide: self]
时,所有窗口都会重新显示。
我曾经以为,这种通过采取当前窗口状态的快照,然后呼吁所有NSWindow
实例orderOut:
,然后向后进行整个事情时unhide:
被称为实现。
但是,似乎并非如此。我的NSWindow
子类的orderOut:
方法不被称为..实际上它也没有被隐藏。它确实将setCanHide:
设置为YES,但是发生了什么?
任何见解都将非常感激。
最好的问候,
弗兰克
谢谢你看看。我最后做了几乎相同的事情,单步调试调试器,但这不是我所熟悉的事情。我认为有人可能会对以前的工作有一些想法......在OS X中,Cocoa层经常只做表面工作,然后一切都进入Carbon层。我试图自己做很多窗口管理,因为我需要更多的窗口行为控制,而不是Cocoa通常给你的(窗口更改层)。如果NSWindow真的完成了整个工作,那将会很好。 – 2010-10-29 06:11:07
最后,我意识到我无法通过继承NSWindow或通过通知获得所有必需的功能,所以我得到了一个混合解决方案(覆盖一些窗口管理任务,并在后台重新配置NSWindow以响应应用程序和窗口通知),它似乎工作正常。这不是很优雅。谢谢你的帮助。 – 2010-10-29 06:17:06