让 NSPanel 永远在最前面

Make NSPanel always on top

我正在为 react-native-macos 搭建一座桥梁。我需要具有与 Spotlight 相同行为的 NSPanel。 我以编程方式创建了它,但有疑问:

  1. 不能让它总是在最前面(如果应用程序被隐藏它也应该工作)
  2. 面板内有NSTextField。如果我试图隐藏标题面板,我将无法更改该字段。看起来它已禁用。
  3. 显示结果的最佳方式是什么(例如在聚光灯下)
private var panel = NSPanel()
private var textField = NSTextField(frame: NSMakeRect(0,0,400,40))

var frame: NSRect = CGRect(x: 0, y: 0, width: 400, height: 40)
frame.size = NSSize(width: 400, height: 60)
panel.setFrame(frame, display: true)
  
let view: NSView = NSView(frame: frame)
    
myTextField.stringValue = "Some text"
myTextField.isEnabled = true
myTextField.font = NSFont.systemFont(ofSize: 28)
    
view.addSubview(myTextField)

panel.contentView?.addSubview(view)

panel.makeKeyAndOrderFront(panel)
panel.center()

让它浮动

panel.isFloatingPanel = true           // << this one !!
panel.makeKeyAndOrderFront(panel)
panel.center()

这对我有用

panel.level = .mainMenu