使 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
。 :)
我目前正在 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
。 :)