gpt4 book ai didi

cocoa - 如何格式化/着色 NSTextView 字符串的技术

转载 作者:行者123 更新时间:2023-12-03 16:08:02 25 4
gpt4 key购买 nike

我正在寻找一种可靠的技术来在 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];

工作正常。我现在遇到的唯一问题是,在某些情况下,当我键入新字符时,这些字符默认为粗体或斜体,即使我没有将属性应用于它们。

我是否必须使用 NSTextViewsetTypingAttributes 重置某些内容,还是我只是错过了这里的某些内容?

最佳答案

我认为您设置typingAttributes的方法是正确的。 Reference for -setTypingAttributes: says

However, if you add any user actions that change text attributes, the action should use this method to apply those attributes afterwards. User actions that change attributes should always set the typing attributes because there might not be a subsequent change in selection before the next typing.

这似乎适用于您的情况。

我不知道所描述的行为是否仅适用于 TextEdit 等所见即所得编辑器。您似乎正在处理一些行为与具有语法突出显示的编辑器类似的东西。在那里,您永远不想手动更改文本属性,而是更改语法的结构。它可能不适合这种情况,您应该重置 typingAttributes 或根据解析进行设置。

关于cocoa - 如何格式化/着色 NSTextView 字符串的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com