NSWindow orderOut - есть ли способ дождаться закрытия окна?
В моей программе у меня есть окно, в котором пользователь размещает на экране ту часть, которую он хочет сфотографировать.
Затем, когда он нажимает кнопку, чтобы сделать снимок, моя программа orderOut
Это окно, делает снимок экрана и снова показывает окно, теперь со скриншотом в нем.
Проблема в, orderOut
похоже, не закрывает окно сразу. Поэтому, когда я делаю скриншот, он обычно делает скриншот самого окна (которое должно было быть закрыто), что, очевидно, не то, что я хочу.
Я смог обойти проблему, позвонив sleep(1)
после звонка orderOut
, но наверняка есть лучший способ?
1 ответ
Согласно документации здесь. Окно делает анимацию, когда вы вызываете orderOut. Следовательно, вы можете удалить анимацию orderOut, установив поведение анимации на none:
[myWindow setAnimationBehavior:NSWindowAnimationBehaviorNone]
или используйте метод NSObject e xecuteSelector: withObject: afterDelay: для выполнения операции снимка экрана через определенное время x. Предполагая, что анимация NSWindow orderOut использует длительность по умолчанию, задержка будет равна 0,2f. В противном случае вы можете сделать несколько тестов, чтобы проверить, какое значение подходит для вашего случая.