У меня есть приложение в строке меню, в котором периодически возникают проблемы с рендерингом.Всякий раз, когда я открываю приложение из меню, оно работает нормально, но иногда, когда приложение работает и я нажимаю на значок приложения на панели 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
}
}
IУ меня есть контроллер для меню, которое вызывает некоторые функции, которые отображают фактическое меню
@IBOutlet weak var statusMenu: NSMenu!
let statusItem = NSStatusBar.system.statusItem(withLength: CGFloat(70))
override func awakeFromNib() {
statusItem.menu = statusMenu
updateTitle()
setupMenu()
renderMenu()
}