nanochrome
nanochrome

Reputation: 727

NSTimer with a menu bar app

I'm working on a simple timer app, and I've created a NSStatusItem with a menu and I have some NSTextField labels that updates the timer labels (http://cld.ly/e81dqm) but when I click on the status item the NSTimer stops (and stops updating the labels)..... how can I get around this problem?

EDIT: here's the code that starts the timer:

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

Upvotes: 7

Views: 858

Answers (2)

Qaisar Majeed
Qaisar Majeed

Reputation: 111

You should add timer into MainRunLoop as given below:

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

Upvotes: 11

Josh Freeman
Josh Freeman

Reputation: 2282

I'm guessing the timer resumes as soon as you stop interacting with the NSStatusItem? (After the menu's dismissed & mouse button released).

The user interaction puts the main run loop into a mode where it doesn't update timers, so if your label has to continually update, you'll probably need to move the NSTimer and the label drawing to a separate process or another thread.

Upvotes: 4

Related Questions