2017-03-04 7 views
1

Ich bin derzeit Codierung eines Texteditors in Swift und ich habe Probleme mit dem Einfügen einer neuen Zeile ("\ n"), wenn Sie Enter/Return drücken.Machen NSTextField akzeptieren Rückkehr und Eingabe ohne Bearbeitung zu beenden

Wenn Sie jetzt die Eingabetaste drücken, fügt das TextField eine neue Zeile ein, beendet aber die Bearbeitung ohne Grund.

Hier ist meine Funktion, die nur aufgerufen wird, wenn Enter gedrückt wird.

@IBAction func textFieldAction(_ sender: NSTextField) { 
    self.textField?.stringValue.append("\n") 
    self.textField?.selectAll(nil) 
} 

Wenn es mehr von meinem Code benötigt, um die gesamte Datei finden Sie hier: https://github.com/notalent/manuscript-mac/blob/master/Manuscript/Document.swift

+0

Warum verwenden Sie nicht stattdessen eine 'TextView'? –

+0

Soweit ich weiß, können Sie keinen (attributierten) Platzhalter für NSTextView setzen – IliasMay

Antwort

2

ich glaube, die richtige Antwort ist „nicht NSTextField verwenden, verwenden NSTextView“. NSTextField wurde nicht entworfen, um das zu tun, was Sie versuchen zu tun. Die Cocoa Text Architecture Guide hat eine Reihe von Informationen über beide NSTextField und NSTextView. Siehe auch this question here on SO.

Wenn Sie jedoch darauf bestehen, NSTextField zu verwenden, können Sie die Delegatenmethode control:textView:doCommandBySelector: implementieren, um eine spezielle Behandlung von Rückgabe-/Eingabetasten (unter anderem) in einer NSTextField bereitzustellen. Siehe Apple's Technical Q&A QA1454, "How to make NSTextField accept tab, return and enter keys".

Ernsthaft, aber ... verwenden Sie einfach NSTextView. :)

Verwandte Themen