Я создал приложение меню, используя Swift, для Mac OS, в котором пользовательский вид является единственным пунктом меню.В этом пользовательском представлении есть кнопка «плюс», которая открывает окно с текстовым полем.
Когда я нажимаю кнопку «плюс», появляется окно, но меню не исчезает.Текстовое поле также не сфокусировано.Когда я набираю одну букву, эта буква не отображается в текстовом поле, но меню исчезает, и текстовое поле фокусируется и готово к вводу.
Я хочу, чтобы пользовательское представление или меню исчезли, аТекстовое поле готово к приему нажатий клавиш, когда я нажимаю кнопку «плюс», а не после нажатия дополнительной клавиши.
Как мне этого добиться?Что я делаю не так?
Вот мой код:
// CustomView.swift
var customWindow: CustomWindow!
override func awakeFromNib() {
customWindow = CustomWindow()
}
@IBAction func plusButtonClicked(_ sender: NSButton) {
customWindow.showWindow(nil)
}
// CustomWindow.swift
override var windowNibName : NSNib.Name? {
return NSNib.Name("CustomWindow")
}
override func windowDidLoad() {
super.windowDidLoad()
self.window?.center()
self.window?.makeKeyAndOrderFront(self)
self.window?.level = .mainMenu + 100
NSApp.activate(ignoringOtherApps: true)
if customTextField.acceptsFirstResponder {
customTextField.window?.makeFirstResponder(customTextField)
}
// CustomMenuContoller.swift
let statusBarItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
@IBOutlet weak var CustomMenu: NSMenu!
@IBOutlet weak var customView: CustomView!
var customMenuItem: NSMenuItem!
override func awakeFromNib() {
customMenuItem = CustomMenu.item(withTitle: "TheMenu")
customMenuItem.view = customView
statusBarItem.menu = CustomMenu
}