7 Stimmen

NSTimer mit einer Menüleistenanwendung

Ich arbeite an einem einfachen Timer app, und ich habe ein NSStatusItem mit einem Menü erstellt und ich habe einige NSTextField Etiketten, die die Timer-Labels aktualisiert ( http://cld.ly/e81dqm ), aber wenn ich auf das Statuselement klicke, bleibt der NSTimer stehen (und aktualisiert die Beschriftungen nicht mehr) ...... Wie kann ich dieses Problem umgehen?

EDIT : Hier ist der Code, der den Timer startet:

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

0 Stimmen

Ich muss den Code sehen, mit dem Sie den Timer starten und stoppen. Meinen Sie, dass der Timer die Beschriftungen aktualisiert?

0 Stimmen

Und es wird nicht mehr aktualisiert, wenn ich auf den Statuseintrag klicke, ich weiß nicht, was los ist.

11voto

Qaisar Majeed Punkte 111

Sie sollten den Timer wie unten angegeben in die MainRunLoop einfügen:

NSRunLoop * rl = [NSRunLoop mainRunLoop];
[rl addTimer:timer forMode:NSRunLoopCommonModes];

4voto

Josh Freeman Punkte 2252

Ich schätze, dass der Timer fortgesetzt wird, sobald Sie die Interaktion mit dem NSStatusItem beenden? (Nachdem das Menü entlassen und die Maustaste losgelassen wurde).

Die Benutzerinteraktion versetzt die Hauptlaufschleife in einen Modus, in dem die Zeitgeber nicht aktualisiert werden. Wenn Ihr Etikett also ständig aktualisiert werden muss, müssen Sie wahrscheinlich den NSTimer und das Zeichnen des Etiketts in einen separaten Prozess oder einen anderen Thread verschieben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X