J'ai une petite application OSX Cocoa qui affiche simplement un IKPicutreTaker et enregistre l'image dans un fichier si celui-ci est défini. J'utilise applicationShouldTerminateAfterLastWindowClosed: pour fermer l'application lorsque le PictureTaker est fermé. Cela fonctionne très bien quand je choisis (c'est fait quand vous avez choisi l'image que vous voulez) ou quand vous cliquez sur annuler, mais quand je clique sur la flèche rouge en haut à gauche des fenêtres, l'application ne se ferme pas quand la fenêtre est fermée de cette façon. Est-ce que cette fonctionnalité est prévue ou est-ce que je fais quelque chose de mal (ne pas mettre un drapeau?). Aussi, est-il possible de désactiver ce bouton?applicationShouldTerminateAfterLastWindowClosed: ne semble pas fonctionner lorsque le x rouge est utilisé pour fermer mon application Cocoa
Répondre
Cliquer sur le bouton rouge ne ferme pas une application, en partie parce que ce verbe ne va pas avec ce nom. Le bouton rouge ferme la fenêtre. il ne quitte pas votre application. (Une application peut avoir et aura souvent plusieurs fenêtres sous Mac OS X.)
C'est là que applicationShouldTerminateAfterLastWindowClosed:
entre en jeu. Chaque fois que l'utilisateur ferme la dernière fenêtre de l'écran (soit en cliquant sur le bouton rouge, en choisissant Fermer dans le fichier menu, ou par d'autres moyens), l'objet NSApplication enverra un message applicationShouldTerminateAfterLastWindowClosed:
à son délégué, pour lui demander si l'application doit se terminer. Si le délégué répond au message en renvoyant YES
, l'application se termine automatiquement. Vous ne dites pas exactement comment vous "utilisez" applicationShouldTerminateAfterLastWindowClosed:
. Si vous ne faites que l'envoyer à un objet, cela ne fonctionnera pas, parce que vous posez une question ("l'application devrait-elle se terminer après la fermeture de la dernière fenêtre?"), Puis en ignorant la réponse. Si vous implémentez la méthode dans un objet, mais que cet objet n'est pas le délégué de l'application, cela ne fonctionnera pas non plus: l'objet application envoie uniquement ce message à son délégué.
Vous devez implémenter la méthode dans votre délégué et renvoyer YES
lorsqu'il est approprié que l'application se termine lorsque l'utilisateur ferme sa dernière fenêtre.
- 1. ImpersonateLoggedOnUser ne semble pas fonctionner
- 2. DataTable.DefaultView.Sort ne semble pas fonctionner
- 3. Le mode fmShareDenyWrite ne semble pas fonctionner
- 4. Pourquoi mon instruction "if" semble-t-elle ne pas fonctionner?
- 5. Shadowbox ne semble pas fonctionner
- 6. applyCurrentValues ne semble pas fonctionner
- 7. msSiteModeActivate ne semble pas fonctionner
- 8. selenium.keypressnative ne semble pas fonctionner
- 9. SqlBulkCopy ne semble pas fonctionner pour moi
- 10. TreeNodeCollection.Find ne semble pas fonctionner
- 11. jQuery.parent() ne semble pas fonctionner
- 12. convertPoint: toView: ne semble pas fonctionner
- 13. $ .ajax ne semble pas fonctionner
- 14. Le filtre jQuery() ne semble pas fonctionner?
- 15. CFExecute ne semble pas fonctionner
- 16. Le tri Php ne semble pas fonctionner pour moi
- 17. Ninject OnePerRequestBehaviour ne semble pas fonctionner correctement?
- 18. ErrorDocument ne semble pas fonctionner dans mon .htaccess
- 19. Ajax activé wcf service ne semble pas fonctionner pour moi
- 20. La propriété EnforceConstraints ne semble pas fonctionner?
- 21. ASP.NET Response.TransmitFile() ne semble pas fonctionner
- 22. L'utilisation de la méthode applicationWillTerminate ne semble pas fonctionner
- 23. AutoMapping avec FluentMapping ne semble pas fonctionner pour moi
- 24. Le verrouillage de réveil ne semble pas fonctionner
- 25. La session semble ne pas fonctionner asp.net
- 26. drupal '#process' callback ne semble pas fonctionner!
- 27. jquery's event.stopImmediatePropagation() ne semble pas fonctionner
- 28. Silverlight: INotifyPropertyChanged ne semble pas fonctionner
- 29. position de réglage d'un contrôle ne semble pas fonctionner lorsque défilement est « déplacé » (C#, WinForms)
- 30. Databound combo SelectedItem ne semble pas fonctionner