NSWindow makeKeyAndOrderFront rend fenêtre s'affiche, mais pas de Clé ou de l'Avant
makeKeyAndOrderFront
n'est pas de faire mon NSWindow de la clé ou de la face.
Mon application ne pas avoir une fenêtre principale ou de la barre de menu, qui peut être une partie du problème?
IBOutlet NSWindow *loginWindow;
//(connected in Interface Builder to the NSWindow)
La NSWindow a "visible au lancement" et "libération lorsqu'il est fermé" à la fois décochée.
Alors:
- (void) applicationDidFinishLaunching:(NSNotification *)aNotification
{
[loginWindow makeKeyAndOrderFront:self];
}
Ce ne ouvrir la fenêtre. (en commentant les résultats dans aucune fenêtre soit ouverte).
Cependant:
-
Il apparaît derrière la fenêtre de Xcode (pas avant).
-
Il apparaît pour recevoir le focus de la souris, mais ne prendra pas en appuis sur les touches dans l'textfields la fenêtre contient. Les pressions sur les touches sont envoyés à Xcode.
-
Il apparaît dans l'exposé de la grille lors de l'Exposer est activé. Mais je ne peut pas cliquer sur la fenêtre pour sélectionner dans l'Exposer... il ne viendra pas à l'avant.
Pourquoi n'est-ce pas la Fenêtre de mon travail?
- Les Applications ne sont pas tenus d'avoir une “fenêtre principale”, ou de toute application spécifique à windows, ni d'un menu principal (bien que l'on devrait toujours en avoir un menu principal—un grand nombre de commandes de touche de venir gratuitement de cette manière, même si l'application n'utilise pas la barre du menu). Quelle que soit la fenêtre active de l'apparence est la Fenêtre Principale de Cacao terminologie; plus important encore, il est tout à fait valable pour une application ont pas de fenêtres, comme l'a démontré par chaque document en fonction de l'application, de base uniquement de l'application, et l'élément de l'INTERFACE utilisateur.
Vous devez vous connecter pour publier un commentaire.
Coup de poignard dans le noir: Vous avez
LSBackgroundOnly
ensemble de vos Infos.plist. C'est ce qui rend ce pas le travail: Un arrière-plan uniquement application ne peut pas venir à l'avant-plan, qui est pourquoi votre fenêtre n'est pas au premier plan.Si vous voulez que votre application s'affiche pas dans le Dock, ensemble
LSUIElement
à la place. Cela supprime de votre application Quai de la tuile et l'empêche de montrer son propre menu principal dans la barre de menu, mais conserve sa capacité à apporter une fenêtre au premier plan et d'en faire la clé.LSUIElement
il fixe. J'ai été en utilisantNSBGOnly
qui semble désormais obsolète.NSBGOnly
a été renomméLSBackgroundOnly
. Seulement l'ancien nom est obsolète;LSUIElement
etLSBackgroundOnly
sont à la fois actuel, mais faire des choses différentes. Ils, et toutes les autres touches sont décrits dans les Informations de Liste de Propriété de la Clé de Référence: developer.apple.com/library/mac/documentation/General/Reference/...Essayez d'appeler cette méthode
[NSApp activateIgnoringOtherApps:YES];
. Cela devrait rendre l'application active.NSApp
? Collé dans l'est, au-dessus de lamakeKeyAndOrderFront
ligne, il n'y a pas de changement. Exactement le même comportement que j'ai décrit ci-dessus.activateIgnoringOtherApps
de commande, en plus de l'ajoutLSUIElement
pour l'Info.plist.Ces deux réponses sont correctes. Vous aurez également besoin de assurez-vous de remplacer
canBecomeKey
dans la fenêtre de votre sous-classe si c'est sans frontières.Cela a eu être une éternité pour le comprendre. (J'ai écrit un post de blog sur l'intégralité de ma solution.)