如何格式化/着色 NSTextView 字符串的技术
我正在寻找一种可靠的技术来在 NSTextView 中进行简单的字符串格式化(粗体,斜体,...)。文本解析几乎是用正则表达式完成的,但现在我需要应用字体特征并更改大小。
关于如何将文本加粗的一些代码片段
[[textView textStorage] beginEditing];
[[textView textStorage] applyFontTraits:NSFontBoldTrait range:range];
[[textView textStorage] endEditing];
以及大小的变化都可以
[[textView textStorage] beginEditing];
NSFont* font = [[textView textStorage] attribute:NSFontAttributeName atIndex:range.location effectiveRange:nil];
NSFont* newFont = [NSFont fontWithName:[font familyName]
size:[font pointSize] + size];
[[textView textStorage] addAttribute:NSFontAttributeName
value:newFont
range:range];
[[textView textStorage] endEditing];
正常工作。我现在遇到的唯一问题是,在某些情况下,当我键入新字符时,这些字符默认为粗体或斜体,即使我没有将属性应用于它们。
我是否必须使用 NSTextView
的 setTypingAttributes
重置某些内容,或者我只是错过了这里的某些内容?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您设置
typingAttributes
的方法是正确的。-setTypingAttributes 的参考:
说这似乎适用于你的情况。
我不知道所描述的行为是否仅适用于 TextEdit 等所见即所得编辑器。您似乎正在处理一些行为与具有语法突出显示的编辑器类似的东西。在那里,您永远不想手动更改文本属性,而是更改语法的结构。它可能不适合这种情况,您应该重置
typingAttributes
或根据解析进行设置。I think you are right with the approach to set
typingAttributes
. Reference for-setTypingAttributes:
saysThat seems to apply in your case.
I don't know if the described behaviour is only correct for WYSIWYG editors like TextEdit. You seem to work on something that is similar in behaviour to an editor with syntax highlighting. There you never really want to change text attributes manually, but rather on structure from a grammar. It probably doesn't fit in that case, and you should reset
typingAttributes
or set it according to parsing up to there.