Como detectar que minha janela está sendo fechada usando o botão da janela vermelha?

Eu tenho uma janela de diálogo que pode ser cancelada através de um botão Cancelar personalizado ou usando o botão da janela vermelha do sistema. Eu preciso executar alguma lógica simples quando o diálogo é cancelado. Como faço para detectar que o usuário tenha pressionado o botão vermelho?

Eu sei que posso detectar a janela sendo fechada usando o-windowWillClose: callback delegado. Mas esse retorno de chamada também é chamado quando eu fecho a janela programaticamente depois que a caixa de diálogo é bem-sucedida. Eu também sei que eu poderia simplesmente criar umBOOL bandeira, mas existe uma solução melhor? Seria melhor se eu pudesse detectar a ativação do botão vermelho.

questionAnswers(1)

yourAnswerToTheQuestion