NSTimer与菜单栏应用程序

nan*_*ome 7 cocoa objective-c nstimer

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

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

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

小智 11

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

NSRunLoop * rl = [NSRunLoop mainRunLoop];
[rl addTimer:timer forMode:NSRunLoopCommonModes];
Run Code Online (Sandbox Code Playgroud)


Jos*_*man 4

我猜一旦您停止与 NSStatusItem 交互,计时器就会恢复?(菜单关闭并释放鼠标按钮后)。

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