¿Cómo detectar que mi ventana se está cerrando con el botón rojo de la ventana?

Tengo una ventana de diálogo que se puede cancelar a través de un botón Cancelar personalizado o usando el botón rojo de la ventana del sistema. Necesito realizar alguna lógica simple cuando se cancela el diálogo. ¿Cómo detecto que el usuario ha presionado el botón rojo?

Sé que puedo detectar el cierre de la ventana usando el-windowWillClose: delegar devolución de llamada. Pero esta devolución de llamada también se llama cuando cierro la ventana mediante programación una vez que el diálogo se realiza correctamente. También sé que podría simplemente configurar unaBOOL bandera, pero ¿hay una mejor solución? Sería mejor si pudiera detectar la activación del botón rojo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta