gpt4 book ai didi

objective-c - NSTextView 语法高亮

转载 作者:太空狗 更新时间:2023-10-30 03:16:20 25 4
gpt4 key购买 nike

我正在开发一个使用 NSTextView 的 Cocoa 文本编辑器。是否可以更改文本某些部分的颜色?

最佳答案

您应该将 Controller 添加为 NSTextView ([textView textStorage]) 的 NSTextStorage 对象的委托(delegate),然后实现该委托(delegate)方法 ‑textStorageDidProcessEditing:。每当文本更改时都会调用此方法。

在委托(delegate)方法中,您需要使用 NSTextView-textStorage 方法从 TextView 中获取当前的 NSTextStorage 对象。 NSTextStorageNSAttributedString 的子类,包含 View 的属性内容。

然后您的代码必须解析字符串并对您感兴趣的任何文本范围应用着色。您使用类似这样的方法将颜色应用于范围,这会将黄色应用于整个字符串:

//get the range of the entire run of text
NSRange area = NSMakeRange(0, [textStorage length]);

//remove existing coloring
[textStorage removeAttribute:NSForegroundColorAttributeName range:area];

//add new coloring
[textStorage addAttribute:NSForegroundColorAttributeName
value:[NSColor yellowColor]
range:area];

如何解析文本取决于您。 NSScanner 是解析文本时使用的有用类。

请注意,此方法绝不是处理语法着色的最有效方法。如果您正在编辑的文档非常大,您很可能会考虑将解析工作卸载到单独的线程和/或巧妙地确定要重新解析的文本部分。

关于objective-c - NSTextView 语法高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218415/

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