我正在使用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
答案 0 :(得分:2)
我认为正确的答案是"不要使用NSTextField
;使用NSTextView"。 NSTextField
并非设计用于执行您尝试执行的操作。 Cocoa Text Architecture Guide在NSTextField
和NSTextView
上都有大量信息。另请参阅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
。 :)