使 NSTextField 接受 return 并在不结束编辑的情况下输入

Make NSTextField accept return & enter without ending editing

我目前正在 swift 中编写文本编辑器,但在按 enter/return 时插入新行 ("\n") 时遇到问题。

现在,当按下 enter 键时,textField 会插入一个新行但无故结束编辑。

这是我的函数,只有在按下回车键时才会调用。

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

如果我需要更多代码,可以在此处找到整个文件: https://github.com/notalent/manuscript-mac/blob/master/Manuscript/Document.swift

我认为正确答案是“不要使用 NSTextField;使用 NSTextView". NSTextField wasn't designed to do what you're trying to do. The Cocoa Text Architecture Guide has a bunch of information on both NSTextField and NSTextView. See also this question here on SO

但是,如果你坚持使用NSTextField,你可以实现委托方法control:textView:doCommandBySelector: to provide special handling of return/enter keys (among other things) in an NSTextField. See Apple's Technical Q&A QA1454, "How to make NSTextField accept tab, return and enter keys"

说真的,不过...只需使用 NSTextView。 :)