Как проверить, видно ли NSWindow - PullRequest
9 голосов
/ 16 августа 2011

Есть ли способ проверить, является ли NSWindow видимым или нет?Я хочу отобразить контроллер листа, как только первое окно моего приложения станет видимым (анимация на 10.7 закончилась, и пользователь сможет увидеть окно!).Если я просто покажу лист в windowDidLoad, это приведет к глупой анимации (раскатывание листа, выпадающее окно сзади).Я знаю, что NSWindowDelegate предоставляет два метода, которые вызываются, когда окно становится либо ключевым, либо основным окном, однако это не означает, что окно уже полностью видно в данный момент.Это еще более заметно на Lion, где окна имеют тенденцию всплывать с этой глупой анимацией.

Ответы [ 2 ]

27 голосов
/ 16 августа 2011

Я бы пошел на что-то вроде этого:

if ([myWindow isVisible]) {
    // Do stuff
}

Или наблюдатель для этого ключевого пути, который будет уведомлен, когда произойдет изменение.

1 голос
/ 15 марта 2013

Для чего бы это ни стоило, вы также можете привязать свойство window.visible. Xcode 4 может кричать на вас, говоря, что это не привязываемое свойство, но оно будет работать.

Это может быть полезно, если вы пытаетесь включить / отключить отображение / скрытие NSStatusItem в зависимости от того, является ли окно видимым, а также другие подходы.

т.е. в Интерфейсном Разработчике:

  • Привязать к: делегат приложения
  • Путь к ключу модели: self.window.visible
...