Я работаю на NSWindow
подклассу, и я бег в какое-то странное поведение, что делает меня вопрос некоторые из моих предположений о том, как работают окна на Mac OS X.Что скрывает NSApp: действительно ли с экземплярами NSWindow?
Что именно происходит с NSWindow
случаями, когда [[NSApplication sharedApplication] hide: self]
называется ?
Все окна, которые не возвращают NO -(BOOL)canHide
, исчезают с экрана. Затем все окна снова появляются, когда приложение становится активным или вызывается [NSApplication sharedApplication] unhide: self]
.
Я предполагал, что это будет достигнуто путем принятия снимок текущего состояния окна, то вызов orderOut:
на всех NSWindow
экземпляров, а затем выполнять все это в обратном направлении, когда unhide:
называется.
Это, похоже, не так. Метод orderOut:
моего подкласса NSWindow
не называется .. на самом деле он также не скрыт. Он установил setCanHide:
YES, хотя .. что происходит?
Любые идеи были бы очень оценены.
С наилучшими пожеланиями,
Frank
Спасибо, что посмотрели. В конце концов, я сделал почти то же самое, единственный шаг по отладчику, но это не та вещь, с которой мне очень нравится. Я подумал, что кто-то может подумать о том, как это работает с предыдущей работы .. так часто в OS X слой Cocoa только обрабатывает поверхность, а затем все переходит в слой Carbon. Я пытался сделать много управления окнами самостоятельно, потому что мне нужно было немного больше контролировать поведение окна, чем обычно предлагает Cocoa (окна, меняющие слои); это было бы хорошо, если бы NSWindow действительно выполнял всю работу. –
В конце концов, осознав, что я не смог добраться до всех необходимых функций путем подкласса NSWindow или с помощью уведомлений, я получил гибридное решение (переопределение некоторых задач управления окнами и выполнение некоторых за кулисами реконфигурации NSWindow в ответ на приложение и окно уведомления), и, похоже, он работает нормально. Это просто не очень элегантно. Спасибо за вашу помощь. –