2013-07-19 5 views
1

Функция NSBeginAlertSheet(...) имеет все события, которые мне нужны, чтобы иметь обратный вызов didDismiss:, но мне действительно нужно иметь возможность делать то же действие с любым окном, которое я хочу, поэтому я обнаружил это уведомление :Правильный способ показа NSWindow в качестве листа

NSWindowDidOrderOffScreenAndFinishAnimatingNotification

, который размещен, когда лист закрывается и делается с анимацией теперь, мой вопрос я могу использовать это? Или есть лучший способ?

Я использую ARC и загружаю окна с .xib с использованием NSWindowController.

В целом, мне нужно показать окно в виде листа и поймать все события.

+0

Похож на случай использования пользовательских протоколов и делегирования. Это легко, как вытаскивать гвозди в первый раз. – timquinn

+0

С протоколами и делегированием вы можете существенно добавить методы, которые вам нужны, в свой собственный класс и назначить делегата для получения сообщений и предпринять необходимые действия. Это важный элемент среды какао. Наряду с длинными самодокументируемыми именами классов. – timquinn

ответ

0

NSWindowDidEndSheetNotification Он публикуется всякий раз, когда лист заканчивается оживлением.

2

Что случилось с

- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo 

Это вызывает дополнительный didEndSelector, который должен выглядеть следующим образом:

- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; 

Это все в документации NSApplication. Есть два способа прекращения листа:

- (void)endSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode 
- (void)endSheet:(NSWindow *)sheet 

Таким образом, вы можете просто сделать все, что вы хотели прямо перед вызовом endSheet: или вы могли бы в методе sheetDidEnd:.

Edit:

Here пример проекта, показывающий, что после вызова [window orderOut:self] то анимация закончена, и вы можете делать то, что вы хотите.

+0

Я знаю это, но, как я уже сказал, эти 2 метода будут называть селектор включенным, когда лист близок к оживлению и подъему, то, что я искал, получал событие, когда это было сделано анимацией !!! попробуйте, вы увидите. –

+0

@Mack см. Мое редактирование с примером проекта –

+1

чувак Я кое-что узнал сегодня! Я не знал -endSheet: returnCode: был синхронным! благодаря! это помогло! +1 –

 Смежные вопросы

  • Нет связанных вопросов^_^