NSStatusItem et focus
skimpy
Membre
Bonsoir,
J'essaie de me familiariser avec la classe NSStatusItem mais je rencontre quelques problèmes. Mon exemple est très simple : j'ai un NSMenu avec un NSMenuItem qui pointe sur une NSView contenant un champ de recherche (c'est comme Spotlight en fait) et un bouton (qui permet de quitter).
Voilà le code que j'ai écrit :
Lorsque je lance l'application, celle-ci apparaà®t bien dans la barre des menus. Quand je clique sur son icône, le menu apparaà®t avec le champ de recherche et le focus est bien mis dans celui-ci. Mais si je clique sur l'icône d'une autre application de la barre des menus et que je reclique sur l'icône de mon appli, le menu apparaà®t mais le curseur n'est pas positionné dans le champ de recherche (pourtant ma méthode methodExecutedWhenMenuIsClicked est bien appelée). J'ai beau cliquer dedans, rien ne se passe ... le curseur indiquant que l'on peut saisir du texte n'apparaà®t pas. Si je clique sur le bouton pour quitter l'application, celui-ci fonctionne mais on ne voit pas que le bouton a été enfoncé ... c'est comme si l'interface était figée.
Auriez-vous une idée ?
Merci.
J'essaie de me familiariser avec la classe NSStatusItem mais je rencontre quelques problèmes. Mon exemple est très simple : j'ai un NSMenu avec un NSMenuItem qui pointe sur une NSView contenant un champ de recherche (c'est comme Spotlight en fait) et un bouton (qui permet de quitter).
Voilà le code que j'ai écrit :
<br />
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification<br />
{<br />
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];<br />
[statusItem setImage:[NSImage imageNamed:@"icon.png"]];<br />
[statusItem setHighlightMode:YES];<br />
[statusItem setMenu:myMenu];<br />
}<br />
<br />
- (void)methodExecutedWhenMenuIsClicked<br />
{<br />
NSLog(@"methodExecutedWhenMenuIsClicked");<br />
[[mySearchField window] makeFirstResponder:mySearchField];<br />
}<br />
<br />
- (void)menuWillOpen:(NSMenu *)menu<br />
{<br />
[[NSRunLoop currentRunLoop] performSelector:@selector(methodExecutedWhenMenuIsClicked) target:self argument:myMenu order:0 modes:[NSArray arrayWithObject:NSEventTrackingRunLoopMode]];<br />
<br />
}<br />
Lorsque je lance l'application, celle-ci apparaà®t bien dans la barre des menus. Quand je clique sur son icône, le menu apparaà®t avec le champ de recherche et le focus est bien mis dans celui-ci. Mais si je clique sur l'icône d'une autre application de la barre des menus et que je reclique sur l'icône de mon appli, le menu apparaà®t mais le curseur n'est pas positionné dans le champ de recherche (pourtant ma méthode methodExecutedWhenMenuIsClicked est bien appelée). J'ai beau cliquer dedans, rien ne se passe ... le curseur indiquant que l'on peut saisir du texte n'apparaà®t pas. Si je clique sur le bouton pour quitter l'application, celui-ci fonctionne mais on ne voit pas que le bouton a été enfoncé ... c'est comme si l'interface était figée.
Auriez-vous une idée ?
Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses