无论如何,要让(包装)NSTextField 在按回车键时写入回车符?
我想在我的应用程序中使用可能包含回车符的换行文本字段。有没有办法强制 NSTextField 对象在按下 Return 键时将回车符写入文本区域,而不是将其操作发送到目标?
I want to use a wrapping text field that can potentially contain carriage returns in my app. Is there any way to force the NSTextField object to write a carriage return into the text area instead of sending its action to its target when the Return key is pressed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
技术问答 QA1454 对此进行了介绍,其中还介绍了列举了在这种情况下使用
NSTextField
而不是NSTextView
的原因。您可以在文本字段委托中实现以下方法:
This is covered in Technical Q&A QA1454, which also enumerates reasons why one would use
NSTextField
instead ofNSTextView
in this case.You can implement the following method in the text field delegate:
好吧,我找到了一种方法,但这可能不是最好的(甚至不是好的)方法。我对 NSTextField 进行子类化,并覆盖
-textShouldEndEditing:
,如下所示:Okay, I figured out one way to do it, but this very well may not be the best (or even a good) way. I subclassed NSTextField, and overrode
-textShouldEndEditing:
like so:我发现 Sean 和 Bevarious 的组合最适合我。肖恩的回答假设新行总是希望添加到末尾(而不是例如用户光标所在的位置)。
I found a combination of Sean and Bevarious worked best for me. Sean's answer assumes that the new line is always wanted to be added to the end (instead of for instance where the user's cursor is placed).
斯威夫特版本:
Swift version: