命令行Swift脚本的最低可行的Cocoa GUI是什么?

问题描述 投票:0回答:1

问:在macOS上,我的Swift脚本需要一个辅助GUI。它只需要一个文本输入字段和一个确定按钮。

我不想仅仅为了这个小小的弹出窗口而走整个whole肿的Xcode路线。但是,Apple的文档使我失败了,因为我的NSWindow无法捕获键盘输入。帮助!

swift macos cocoa appkit
1个回答
0
投票

[感谢Apple's documentation,我终于弄清楚了从命令行Swift应用程序接受键盘输入]启动简单的AppKit / Cocoa GUI所需的魔咒♂‍♂️。 没有Xcode

接受WKWebViews中的文本输入也需要此。

// main.swift // Dylan Sharhon // Tested on Catalina, Nov 2019
import AppKit // import Cocoa if you also need Foundation functionality

let app = NSApplication.shared
app.setActivationPolicy(.regular) // Magic to accept keyboard input and be in the dock!

let window = NSWindow.init(
  contentRect: NSRect(x: 300, y: 300, width: 200, height: 85),
  styleMask:   [
    NSWindow.StyleMask.titled     // Magic needed to accept keyboard input
  ],
  backing:     NSWindow.BackingStoreType.buffered,
  defer:       false
)
window.makeKeyAndOrderFront(nil)  // Magic needed to display the window

// Text input field
let text = NSTextField.init(string: "")
text.frame = NSRect(x: 10, y: 45, width: 180, height: 25)
window.contentView!.addSubview(text)

// Button
class Target {
  @objc func onClick () {         // Magic @objc needed for the button action selector
    print(text.stringValue)       // Goes to stdout
    exit(0)
  }
}
let target = Target()
let button = NSButton.init(
  title:  "OK",
  target: target,
  action: #selector(Target.onClick)
)
button.frame = NSRect(x:50, y:10, width:100, height:30)
window.contentView!.addSubview(button)

app.run()

向像我这样的菜鸟:这是整个应用程序

,您可以使用swift main.swift运行它,或使用swiftc main.swift对其进行编译,然后将生成的可执行文件(仅40 KB)重命名为您想要的文件名菜单栏。
© www.soinside.com 2019 - 2024. All rights reserved.