2011-02-01 3 views
0

Dans mon programme, un NSPanel contenant une vue Web apparaît à un utilisateur pour qu'il s'authentifie sur une page Web. Je veux surveiller si l'utilisateur ferme le WebView avant que l'authentification soit terminée. J'ai recherché des messages dans le protocole WebFrameLoadDelegate mais je n'ai pas pu trouver de message qui se déclenche lorsque l'utilisateur clique sur le bouton de fermeture de NSPanel et seulement lorsque l'utilisateur clique sur le bouton de fermeture.Message lorsqu'une fenêtre WebView est fermée?

J'ai regardé NSWindowController et le sous-classement redéfinissant la méthode proche. Peut-être que je l'ai fait mal, parce que même lorsque j'ai supprimé l'appel [super proche], le panneau est toujours fermé.

Alors, quelle est la procédure correcte pour l'exécution du code supplémentaire lorsque le NSPanel contenant le WebView ferme?

Répondre

0

Si vous voulez empêcher l'utilisateur de fermer une fenêtre, vous devez set the window's style mask pour ne pas inclure NSCloseableWindowMask. Cela désactivera le bouton de fermeture de la fenêtre, de sorte qu'il ne peut être fermé que par programmation. Dans le cas le plus simple, vous pouvez simplement faire [panel setStyleMask:[panel styleMask]^NSCloseableWindowMask].

En outre, si vous voulez remplacer le comportement de fermeture d'une fenêtre, vous devez soit remplacer la méthode de NSWindow (pas de NSWindowController) close, ou mettre en œuvre windowShouldClose: sur le délégué de la fenêtre. Je pense que la deuxième façon est meilleure. En tout cas, -[NSWindowController close] est juste une méthode pratique pour fermer la fenêtre. Ce n'est pas ce qui est normalement appelé quand une fenêtre se ferme.

+0

Parfait. Merci! – Aaron

Questions connexes