NSTimer с приложением панели меню - PullRequest
7 голосов
/ 14 февраля 2010

Я работаю над простым приложением таймера, и я создал NSStatusItem с меню, и у меня есть несколько меток NSTextField, которые обновляют метки таймера (http://cld.ly/e81dqm), но когда я нажимаю на элемент состояния, NSTimer останавливается (и прекращает обновление меток) ..... как я могу обойти эту проблему?

РЕДАКТИРОВАТЬ: вот код, который запускает таймер:

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

Ответы [ 2 ]

11 голосов
/ 24 февраля 2011

Вы должны добавить таймер в MainRunLoop, как указано ниже:

NSRunLoop * rl = [NSRunLoop mainRunLoop];
[rl addTimer:timer forMode:NSRunLoopCommonModes];
4 голосов
/ 14 февраля 2010

Полагаю, таймер возобновится, как только вы перестанете взаимодействовать с NSStatusItem? (После закрытия меню и отпускания кнопки мыши).

Взаимодействие с пользователем переводит основной цикл выполнения в режим, в котором он не обновляет таймеры, поэтому, если ваша метка должна постоянно обновляться, вам, вероятно, придется переместить NSTimer и чертеж метки в отдельный процесс или другой нить.

...