8
votes

Montrant un Nswindow modal sans activer les autres fenêtres d'application

J'ai un nstatusitem qui affiche correctement dans la menuGar. L'un des éléments (lorsque vous avez cliqué sur) affiche une NSWINDOW modale de mon application, qui est destinée à effectuer une tâche unique, puis disparaît. (Par exemple, l'utilisateur entre dans un petit texte, clique sur "Enregistrer" et que le Nswindow modal disparaît.)

Le problème se produit lorsque l'application est en cours d'exécution. La fenêtre modale apparaît correctement au-dessus de l'application en cours d'exécution au premier plan, mais lorsque l'utilisateur clique sur le bouton "Enregistrer", le reste des fenêtres de l'application est également active. Ceci est indésirable, car l'utilisateur doit ensuite cliquer sur toute application qu'ils utilisaient. (Détruisant la commodité du Nstatusitem.) J'affiche la fenêtre modale à l'aide de: xxx

existe-t-il un moyen de prévenir les clics / événements dans ma fenêtre contextuelle de la fenêtre de l'application pour devenir actif? Ou un moyen de laisser NsApp savoir que ce panneau particulier ne doit pas activer automatiquement le reste de l'application? Merci!


0 commentaires

4 Réponses :


1
votes

Une solution de Ken Thomases sur la liste Cocoa-dev de Cocoa-dev une couple il y a quelques années semble applicable ici aussi:

[[NSApplication sharedApplication] hide:self];
[[NSApplication sharedApplication] performSelector:@selector(unhideWithoutActivation) 
                                        withObject:nil 
                                        afterDelay:0.05];


1 commentaires

Nope, en cliquant n'importe où dans cette fenêtre, apporte toujours les fenêtres d'application associées au premier plan.



19
votes

au lieu de créer un nswindow , créer un nspanel avec le style nsnonactivitypanelmask . Vous pouvez ensuite faire l'habituel CakeKekeandorderfront: et Commande: Pour afficher / masquer le panneau au besoin.


0 commentaires

0
votes

Vous pouvez essayer quelque chose comme: xxx

et lorsque la finition: xxx


0 commentaires

3
votes

BeginModalsession de NsAppForWindow, RunModalSession, EndModalSession est des méthodes dont vous avez besoin.

Regardez ici par exemple comment l'utiliser: Création d'un Nsalert


0 commentaires