2015-08-12 2 views
1

Je n'arrive pas à déterminer comment conserver une application minimisée lorsqu'elle est en cours d'exécution et affiche un NSAlert. En bref, j'ai une application qui est en train de transférer des données, et elle affiche un NSAlert quand elle termine le transfert. Si l'application est minimisée, je veux qu'elle reste ainsi même si elle affiche le NSAlert.Limiter la fenêtre Cocoa lorsque l'application affiche NSAlert

j'appelle le NSAlert avec (Swift):

alert.beginSheetModalForWindow(self, completionHandler: handler) 

Mais la fenêtre s'unminimizes lorsque ce code se déclenche. Si la fenêtre n'est pas minimisée, elle ne prend pas le focus ou ne fait rien d'inattendu (ce que je souhaite).

Existe-t-il un moyen d'accomplir ceci? Merci!

+0

NSAlert comportement est comme ça. Ma suggestion est que vous pouvez faire usage de NSUserNotification dans ce cas –

+0

Ne serait pas mieux d'utiliser un NSAlert pas attaché à quoi que ce soit, si sa fenêtre est réduite? – MrAsterisco

Répondre

0

Vous pouvez essayer de retarder l'affichage de NSAlert.

Mettez votre code d'alerte dans la méthode. Quand il y a un déclencheur pour appeler cette méthode, vérifiez si votre fenêtre est visible. Si oui -> appelez cette méthode. Sinon -> programmer un NSTimer qui se déclenchera après une seconde et appeler la méthode personnalisée pour vérifier si la fenêtre est visible (YES -> afficher l'alerte, NO -> programmer la minuterie à nouveau).

FYI: NSAlert lorsqu'il est affiché en tant que feuille crée une instance de NSPanel qui est une sous-classe de NSWindow.