我的菜单栏应用程序存在间歇性渲染问题。每当我从菜单中打开应用程序时,它都可以正常工作,但有时当应用程序运行时,我点击了Dock / Launchpad中的应用程序图标,我得到了带有文本的菜单的这种奇怪的布局。当我点击应用程序显示的NSUserNotification
时,也会发生这种情况。我搜索了很多,但我找不到任何关于这个问题的提法。
重现的步骤:
这种情况只发生一次,此后问题无法再现。
这是菜单的外观:
菜单不正确:
这是我的AppDelegate
import Cocoa
import Fabric
import Crashlytics
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDelegate {
func applicationDidFinishLaunching(_ aNotification: Notification) {
NSUserNotificationCenter.default.delegate = self
UserDefaults.standard.set(true, forKey: "NSApplicationCrashOnExceptions")
Fabric.with([Crashlytics.self])
}
func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application
}
func userNotificationCenter(_ center: NSUserNotificationCenter, shouldPresent notification: NSUserNotification) -> Bool {
return true
}
}
我有一个Menu的控制器,它调用一些渲染实际菜单的函数
@IBOutlet weak var statusMenu: NSMenu!
let statusItem = NSStatusBar.system.statusItem(withLength: CGFloat(70))
override func awakeFromNib() {
statusItem.menu = statusMenu
updateTitle()
setupMenu()
renderMenu()
}
答案 0 :(得分:0)
我的一个应用出现了这个问题。问题是菜单激活时我的应用程序没有出现在前台。我通过实施解决了该问题:
- (void) menuWillOpen:(NSMenu *) aMenu
{
[NSApp activateIgnoringOtherApps:YES];
}