Question

Je travaille sur une application Timer simple, et j'ai créé un NSStatusItem avec un menu et j'ai des étiquettes NSTextField qui mettent à jour les étiquettes de la minuterie (http://cld.ly/e81dqm) Mais lorsque je clique sur l'élément d'état, le nstimer s'arrête (et cesse de mettre à jour les étiquettes) ..... comment puis-je contourner ce problème?

ÉDITER: Voici le code qui démarre la minuterie:

timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerDidUpdate:) userInfo:nil repeats:YES];

Était-ce utile?

La solution

Je suppose que la minuterie reprend dès que vous arrêtez d'interagir avec le nsstatusitem? (Après le bouton rejeté et de souris du menu).

L'interaction utilisateur met la boucle d'exécution principale dans un mode où il ne met pas à jour les minuteries, donc si votre étiquette doit continuellement mettre à jour, vous devrez probablement déplacer le nstimer et le dessin d'étiquette sur un processus distinct ou un autre thread.

Autres conseils

Vous devez ajouter une minuterie dans MAINRUNLOOP comme indiqué ci-dessous:

NSRunLoop * rl = [NSRunLoop mainRunLoop];
[rl addTimer:timer forMode:NSRunLoopCommonModes];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top