2015-12-26 3 views
9

Ich versuche, eine editierbare Text-Region in einem NSWindow zu machen. Bis jetzt kann ich ein Fenster bilden und ein Textfeld hinzufügen - aber wenn ich es vorwähle und Buchstaben eintippe, werden die Buchstaben in der Schale und NICHT im Textbereich wiederholt.Wie kann ich ein bearbeitbares Textfeld in einer schnellen Shell-Anwendung machen

Hinweis: Dies ist kein Xcode-Projekt ist - ich versuche, dies in der Schale in einer einzigen Datei zu tun - mein Ziel ist es, nur

in Code zu tun, um den Fehler zu replizieren, setzen Sie den folgenden Code in eine Datei (experiment.swift) und

> swift experiment.swift 

ist der Shell-Befehl geben hier den Code


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() 

Antwort

4

Vor app.run(), Nach the docs

app.setActivationPolicy(.Regular) 

hinzufügen, ist der Standard-activationPolicy Prohibited:

  • Verbote

Die Anwendung erscheint im Dock nicht und erstellen kann nicht Fenster oder aktiviert werden. [...] Dies ist auch der Standard für entbündelte ausführbare Dateien, die keine Info.plists haben.

+0

Dies hilft - jetzt kann ich im Fenster bearbeiten, aber wenn ich Wagenrücklauf drücken, wird die gesamte Zeile ausgewählt und eine neue Zeile wird nicht erstellt. –

Verwandte Themen