NSTimer与菜单栏应用程序

时间:2010-02-13 23:22:51

标签: objective-c cocoa nstimer

我正在开发一个简单的计时器应用程序,我已经创建了一个带菜单的NSStatusItem,我有一些NSTextField标签可以更新计时器标签(http://cld.ly/e81dqm)但是当我点击状态项时NSTimer停止(并停止更新标签).....我怎样才能解决这个问题?

编辑:这是启动计时器的代码:

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

2 个答案:

答案 0 :(得分:11)

您应该将计时器添加到MainRunLoop中,如下所示:

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

答案 1 :(得分:4)

我猜测一旦停止与NSStatusItem交互,计时器就会恢复? (菜单被解除后,鼠标按钮被释放)。

用户交互将主运行循环置于不更新计时器的模式,因此如果您的标签必须不断更新,您可能需要将NSTimer和标签绘图移动到单独的进程或其他进程线程。