2017-03-04 59 views
1

我目前正在用swift編寫文本編輯器,並且在按Enter/Return時插入新行(「\ n」)時遇到問題。使NSTextField接受返回並輸入不結束編輯

現在,當按下回車鍵時,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

+0

爲什麼不使用'TextView'來代替? –

+0

因爲據我所知,您不能爲NSTextView設置(歸屬)佔位符 – IliasMay

回答

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。 :)