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

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

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

【问题讨论】:

    标签: macos swift nstimer nsmenuitem


    【解决方案1】:

    您必须将 Timer 添加到 NSRunLoop。

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

    【讨论】:

    • Swift 4 版本RunLoop.current.add(yourTimer, forMode: RunLoopMode.commonModes)
    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多