我已经创建了 NSStatusItem
...
NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
...,并想在点击我的NSPopover
时显示 statusItem
。
var popover = NSPopover()
因此,我编写了以下功能...
@objc func presentPopover() {
switch self.popover.isShown {
case true:
self.popover.performClose(self)
case false:
guard let button = self.statusBarItem.button else { return }
self.popover.show(relativeTo: button.bounds,
of: button,
preferredEdge: .minY)
}
}
...三明治工作正常✅
问题在出现NSPopover
时开始出现-弹出窗口不会变为活动状态/拒绝第一个响应者,因此其内容显示为灰色,用户必须单击视图以使其处于活动状态。 ❌
没有成功,我尝试致电:
NSApplication.shared.activate(ignoringOtherApps: true)
较早的解决方案提到必须将自定义视图设置为statusItem.view
才能使NSPopover
正常工作,但已弃用macOS 10.14
view
。
在OS X 10.14中不推荐使用“视图”:改为使用标准按钮属性
问题:
我正在寻找一种解决方案,其中可以使用Swift 4.2(或更高版本)在NSPopover
上成功实现NSStatusItem
,并使NSPopup
成为键/有效显示弹出窗口后。