2010-10-23 7 views
4

J'ai tenté de masquer la fenêtre principale de mes applications lorsque l'application perd son focus.L'application perd le focus Masquer la fenêtre

Lors de tests

- (void)applicationDidResignActive:(NSNotification *)aNotification 
{ 

[window orderOut:self]; 

    _isShown = NO; 

} 

mais cela semble ne fonctionner une fois, après que j'apporter ma fenêtre arrière avec

[window makeKeyAndOrderFront:self]; 

[window orderFrontRegardless]; 

Il ne fonctionne plus, ce que je fais mal?

+0

Est-ce que '_isShown' a une signification ailleurs? Changez-vous le délégué d'application quelque part? Qu'est-ce exactement "ne fonctionne plus"? L'application est-elle activée avec succès? Est-ce que la fenêtre ne se cache pas la deuxième fois? Est-ce que la méthode 'applicationDidResignActive:' n'est plus appelée? –

+0

_iSShown est une propriété interne que je maintiens, elle n'est appelée nulle part ailleurs car elle ne fonctionne qu'une seule fois. La fenêtre ne se cache PAS la deuxième fois et applicationDidResignActive n'est jamais appelée à nouveau. –

+0

'_isShown' est une variable; puisque sa valeur n'est pas un pointeur sur une fonction, elle ne peut * être appelée. Comment utilisez-vous sa valeur ailleurs? Vous n'avez également pas répondu à deux de mes autres questions: changez-vous le délégué d'application? L'application est-elle activée avec succès? –

Répondre

2

Il me semble que vous voulez réellement un NSPanel, ou au moins rendre votre fenêtre retourner OUI pour -hidesOnDeactivate.

+0

Réglage de la méthode hidesOnDeactivate pour retourner YES n'a pas fonctionné :( Je ne veux pas un panneau b/c mon application entière est 1 fenêtre, et doit cacher quand ce n'est pas le foyer principal –

+0

J'ai également essayé, [self setHidesOnDeactivate: YES] ; dans ma sous-classe NSWindow et cela n'a pas fonctionné non plus. –

Questions connexes