Я работаю над приложением панели меню, которое открывает всплывающее окно. Я хотел бы отобразить всплывающее окно при запуске приложения. Это прекрасно работает, если приложение переднего плана не находится в полноэкранном режиме.
Но, если приложение переднего плана находится в полноэкранном режиме, всплывающее окно просто плавает в середине экрана (очевидно, так как строка меню не видна ). В идеале, я бы хотел, чтобы при запуске приложения автоматически отображалась строка меню.
В качестве альтернативы есть способ, по крайней мере, определить, является ли приложение на переднем плане полноэкранным, поэтому я могу отключить открытие всплывающего окна в тот случай?
Вот текущий код:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
var popover = NSPopover()
@objc func togglePopover(sender: AnyObject?) {
if popover.isShown {
closePopover(sender: sender)
} else {
showPopover(sender: sender)
}
}
func showPopover(sender: AnyObject?) {
if let button = statusItem.button {
popover.show(relativeTo: button.bounds, of: button, preferredEdge: NSRectEdge.minY)
}
}
func closePopover(sender: AnyObject?) {
popover.performClose(sender)
}
func applicationDidFinishLaunching(_ notification: Notification) {
statusItem.button?.image = NSImage(named: "MenuIcon")
statusItem.button?.action = #selector(AppDelegate.togglePopover(sender:))
popover.contentViewController = PopoverViewController(nibName: "PopoverView", bundle: nil)
showPopover(sender: nil)
}
}