macos - 在菜单当前快速打开时从 NSTimer 动态更新 NSMenuItem?

标签 macos swift nstimer nsmenuitem

这是我的情况,我有一个小应用程序可以跟踪你工作了多长时间,并让你知道什么时候该休息了。我有一个每秒触发一次并更新一些数字(剩余时间)的 NSTimer。该应用程序位于状态栏中,我希望剩余时间显示在状态菜单下拉菜单的菜单项中。现在我有更新到 NSMenuItem 并且它可以工作但是当你点击菜单栏中的图标进入菜单时,时间不会在你查看它时动态更新。如果您改变焦点然后返回菜单,时间会保持正确,但同样,当菜单打开时它不会更新。

即使在快速打开菜单的情况下,我仍然可以让 MenuItem 更新吗?还有其他几个具有 objective-c 解决方案的线程,但我无法快速调整它们。

最佳答案

您必须将定时器添加到 NSRunLoop。

NSRunLoop.currentRunLoop().addTimer(yourTimer, forMode: NSRunLoopCommonModes)

关于macos - 在菜单当前快速打开时从 NSTimer 动态更新 NSMenuItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27885181/

相关文章:

swift - OSX开发,Xib菜单和storyboard Window Controller如何关联?

Swift:在没有 switch 语句的情况下打开枚举

ios - 在 Swift 的 FSCalendar 中没有调用 didSelectDate func

objective-c - 计时器因调整窗口大小而延迟

node.js - Node 立即被 kill -MacOS

linux - EventSource 登录单声道

swift - 如何满足包含初始值设定项的协议(protocol)?

ios - iOS使用NSTimers向选择器发送参数

ios - 如何调用 NSTimer 直到选择器成功

python - macOS 上 psutil 的构建轮子失败