Swift - NSMenu Предмет Поповер не получает Фокуса
Поэтому я столкнулся со странной проблемой, которую довольно сложно объяснить, но я постараюсь.
У меня есть пункт меню статуса:
let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-2)
он содержит NSMenu:
let menu = NSMenu()
statusItem.menu = menu }
Теперь я добавляю в него пользовательский пункт меню, который может содержать кнопки или все, что я хочу:
var newController = storyBoard!.instantiateControllerWithIdentifier("testViewController") as! testCustomViewController
var menueItem = NSMenuItem(title: title, action: action, keyEquivalent: key)
menueItem.view = newController.view
statusItem.menu?.addItem(menueItem)
после этого я поместил в меню testButton и позволил ему вызвать действие.
@IBAction func testClick(sender: NSButton) {
appDelegate.testPopover(sender)
}
до сих пор все работает просто замечательно, и, как известно, ican взаимодействует со всем, и все хорошо и круто. Я могу щелкнуть значок, меню открывается и отображает все, что я хочу.
Но теперь к проблеме. Если я открываю Popover на кнопке (которая работает просто отлично) и Popover открыт, я не могу взаимодействовать с Popover. Я все еще могу взаимодействовать с меню и кнопками, и все круто. Но как только я нажимаю в Popover, все скрывается. (он не падает или что-то в этом роде, просто закрывает поповер, меню и т. д.)
Я открываю Popover, как это. в init:
let Popover = NSPopover()
Popover.contentViewController = storyBoard!.instantiateControllerWithIdentifier("test") as! NSViewController
в testPopoverMethod:
Popover.showRelativeToRect(button.bounds, ofView: button, preferredEdge: NSMinYEdge)
Так что я попробовал много вещей, таких как "resignFirstResponder", "становление FirstResponder" и, конечно, я пытался изменить поведение, но я просто не могу решить эту проблему.
Вот снимок экрана http://imgur.com/Wj95eQw если я щелкну где-нибудь в Popover, все будет скрыто, не имеет значения, где, и если есть кнопка или текстовое поле, не имеет значения...
Как я могу это исправить?
1 ответ
Пытаться
func testPopover(sender: AnyObject?) {
NSRunningApplication.currentApplication().activateWithOptions(NSApplicationActivationOptions.ActivateIgnoringOtherApps)
Popover.showRelativeToRect(button.bounds, ofView: button, preferredEdge: NSMinYEdge)
}