Я испытываю действительно странное поведение с NSMenu в Application is agent-Application.
У меня есть следующий простой код для установки значка заголовка с NSMenu. Меню содержит настраиваемый вид с кнопкой NSSwitch.
class AppDelegate: NSObject, NSApplicationDelegate {
let statusBarItem = NSStatusBar.system.statusItem(withLength: -1)
func applicationDidFinishLaunching(_ aNotification: Notification) {
let icon = NSImage(imageLiteralResourceName:"flag")
statusBarItem.image = icon
let menu: NSMenu = NSMenu()
var menuItem = NSMenuItem()
let frame = CGRect(origin: .zero, size: CGSize(width: 100, height: 20))
let viewHint = NSView(frame: frame)
let switchButton = NSSwitch(frame: frame)
viewHint.addSubview(switchButton)
menuItem.view = viewHint
menu.addItem(menuItem)
statusBarItem.menu=menu
}
Работает неплохо, пока фокусируется окно приложений.
Когда я закрываю главное окно приложения, заголовок все еще виден (потому что это приложение-агент). И теперь кнопка переключения в меню больше не реагирует, то есть я не могу ее включить или выключить. Вы можете очень быстро дважды щелкнуть по нему, но это уже не нормальное поведение, и это как-то связано со скрытым окном. Как я уже сказал, работает, если окно видно.
Любые идеи? Спасибо!
NSSwitch
, если приложение не является самым передним и окно все еще открыто? Вы пробовали без Application is agent? Какая строка заголовка все еще видна? - person Willeke   schedule 05.02.2021