Как определить, что мое окно закрывается с помощью красной кнопки?

У меня есть диалоговое окно, которое можно отменить с помощью пользовательской кнопки «Отмена» или с помощью системной красной кнопки. Мне нужно выполнить простую логику, когда диалог отменен. Как я могу определить, что пользователь нажал красную кнопку?

Я знаю, что могу обнаружить закрытие окна, используя-windowWillClose: делегат обратного вызова. Но этот обратный вызов также вызывается, когда я закрываю окно программно после успешного завершения диалога. Я также знаю, что мог бы просто создатьBOOL флаг, но есть ли лучшее решение? Было бы лучше, если бы я мог обнаружить активацию красной кнопки.

 Kevin Grant30 июн. 2012 г., 17:38
Наличие кнопки «Отмена» и кнопки «Закрыть» не является правильным пользовательским интерфейсом (по крайней мере, на Mac). В диалогах кнопки присутствуют, поэтому их достаточно. В этом случае не должно быть включенной красной кнопки в рамке окна; в какао это достигается установкой маски окна.

Ответы на вопрос(1)

Решение Вопроса

Определить кнопку закрытия:

NSButton *closeButton = [self standardWindowButton:NSWindowCloseButton];

Подключите кнопку закрытия к пользовательскому селектору:

[closeButton setTarget:self.delegate];
[closeButton setAction:@selector(closeThisWindow)]; 

Запустите определенный код и закройте окно вручную.

-(void)closeThisWindow {

    //
    // The NSWindowCloseButton has been clicked.
    // Code to be run before the window closes.
    //

    [self close]; 
}
 zoul04 июл. 2012 г., 16:29
Спасибо, это именно то, что я хотел.

Ваш ответ на вопрос