J'ai un 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: p> 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! P> p> nstatusitem code> 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.)
4 Réponses :
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];
Nope, en cliquant n'importe où dans cette fenêtre, apporte toujours les fenêtres d'application associées au premier plan.
au lieu de créer un nswindow code>, créer un
nspanel code> avec le style
nsnonactivitypanelmask code>. Vous pouvez ensuite faire l'habituel
CakeKekeandorderfront: code> et
Commande: Code> Pour afficher / masquer le panneau au besoin. P>
Vous pouvez essayer quelque chose comme: et lorsque la finition: p>
BeginModalsession de NsAppForWindow, RunModalSession, EndModalSession est des méthodes dont vous avez besoin. P>
Regardez ici par exemple comment l'utiliser: Création d'un Nsalert P entièrement personnalisé P>