Quello che stai vedendo, vale a dire il comportamento in cui il tasto Esc chiude la finestra, viene automaticamente integrato nella classe NSPanel
, che è una sottoclasse di NSWindow
.
Da Window Programming Guide > How Panels Work
:
A panel is a special kind of window, typically serving an auxiliary
function in an application. The NSPanel
subclass of NSWindow
adds
a few special behaviors to windows in support of the role panels play:
...
• If a panel is the key window and has a close button, it closes itself
when the user presses the Escape
key.
La finestra delle preferenze (o pannello) in molte applicazioni è implementata come NSPanel
: ad esempio, Safari, Anteprima, Terminale, Console. Il pannello Caratteri nelle app Cocoa è implementato come NSPanel
. Quando scegli Safari > Safari Help, in realtà lancia un'applicazione invisibile di sfondo, HelpViewer.app (/System/Library/CoreServices/HelpViewer.app), la cui finestra principale è implementata come% fluttuante% co_de. Per questi motivi, quei pannelli risponderanno alla chiave Escape chiudendo la finestra. Le finestre generali standard, che sono istanze di NSPanel
, non ottengono automaticamente questo comportamento, poiché solo i pannelli hanno lo scopo di comportarsi in questo modo.