问:在macOS上,我的Swift脚本需要一个辅助GUI。它只需要一个文本输入字段和一个确定按钮。
我不想仅仅为了这个小小的弹出窗口而走整个whole肿的Xcode路线。但是,Apple的文档使我失败了,因为我的NSWindow无法捕获键盘输入。帮助!
[感谢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)重命名为您想要的文件名菜单栏。