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

Posted

技术标签:

【中文标题】在当前快速打开菜单时从 NSTimer 动态更新 NSMenuItem?【英文标题】:Dynamically update NSMenuItem from an NSTimer while the menu is currently open in swift? 【发布时间】:2015-03-09 05:27:11 【问题描述】:

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

即使菜单快速打开,我是否也可以更新该 MenuItem?有几个其他线程具有客观 C 解决方案,但我无法将它们调整为 swift。

【问题讨论】:

【参考方案1】:

您必须将 Timer 添加到 NSRunLoop。

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

【讨论】:

Swift 4 版本RunLoop.current.add(yourTimer, forMode: RunLoopMode.commonModes)

以上是关于在当前快速打开菜单时从 NSTimer 动态更新 NSMenuItem?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何让 NSTimer 在 iOS 中为我​​的音频播放器在后台运行

Android:在应用程序关闭时从后台推送动态通知

如何快速在当前目录打开cmd命令提示符

尝试自动刷新当前页面视图时从ViewPager获取下一页面视图

快速 NSTimer 在后台

Android studio打开很多标签的时候怎么快速切换标签