如何在swift shell应用程序中创建可编辑的文本字段

ja.*_*ja. 10 shell cocoa swift

我正在尝试在NSWindow中创建一个可编辑的文本区域.到目前为止,我可以创建一个窗口并添加一个文本字段 - 但是当我选择它并输入字符时,字符会在shell中而不是文本区域中回显.

注意:这不是Xcode项目 - 我试图在shell中的单个文件中执行此操作 - 我的目标是仅在代码中执行此操作

要复制错误,请将以下代码放入文件(experiment.swift)并提供shell命令

> swift experiment.swift
Run Code Online (Sandbox Code Playgroud)

这是代码


import Cocoa

class MyAppDelegate: NSObject, NSApplicationDelegate {

  let window = NSWindow()
  let ed = NSTextField(frame: NSMakeRect(20, 10, 180, 160))

  func applicationDidFinishLaunching(aNotification: NSNotification) {

    window.setContentSize(NSSize(width:600, height:200))
    window.styleMask = NSTitledWindowMask | NSClosableWindowMask |
                       NSMiniaturizableWindowMask |
                       NSResizableWindowMask

    window.opaque = false
    window.center();
    window.title = "My window"

    ed.font = NSFont(name:"Helvetica Bold", size:20)
    ed.stringValue = "edit me"
    ed.editable = true
    ed.selectable = true

    window.contentView!.addSubview(ed)

    window.makeKeyAndOrderFront(window)
    window.level = 1
}

func applicationWillTerminate(aNotification: NSNotification) {
    // Insert code here to tear down your application
}

}

let app = NSApplication.sharedApplication() 
let obj = MyAppDelegate()

app.delegate = obj
app.run()
Run Code Online (Sandbox Code Playgroud)

Jef*_*son 5

之前app.run(),添加

app.setActivationPolicy(.Regular)
Run Code Online (Sandbox Code Playgroud)

根据文档,默认的activationPolicy是Prohibited:

  • 被禁止

该应用程序未出现在Dock中,可能无法创建窗口或被激活.[...]这也是没有Info.plists的非捆绑可执行文件的默认设置.