让NSTextField接受return&输入而不结束编辑

时间:2017-03-04 00:10:18

标签: swift macos nstextfield

我正在使用swift编写文本编辑器,在按Enter / return时我无法插入新行(“\ n”)。

到目前为止,按Enter键时,textField会插入一个新行但无理由结束编辑。

这是我的功能,仅在按下enter时调用。

@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

1 个答案:

答案 0 :(得分:2)

我认为正确的答案是"不要使用NSTextField;使用NSTextView"。 NSTextField并非设计用于执行您尝试执行的操作。 Cocoa Text Architecture GuideNSTextFieldNSTextView上都有大量信息。另请参阅this question here on SO

但是,如果您坚持使用NSTextField,则可以实现委托方法control:textView:doCommandBySelector:,以便在NSTextField中提供对返回/输入键(以及其他内容)的特殊处理。请参阅Apple's Technical Q&A QA1454, "How to make NSTextField accept tab, return and enter keys"

说真的,但是......只需使用NSTextView。 :)