解决方法
您应该将控制器添加为NSTextView([textView textStorage])的NSTextStorage对象的委托,然后实现委托方法-textStorageDidProcessEditing:。每当文本更改时都会调用此操作。
在委托方法中,您需要使用NSTextView的-textStorage方法从文本视图获取当前的NSTextStorage对象。 NSTextStorage是NSAttributedString的一个子类,它包含视图的属性内容。
然后,您的代码必须解析该字符串,并将颜色应用于您感兴趣的任何文本范围。您可以使用这样的颜色应用于范围,这将对整个字符串应用黄色:
//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是解析文本时使用的一个有用的类。
请注意,这种方法绝不是处理语法着色的最有效方法。如果您正在编辑的文档非常大,您很有可能会考虑将解析分解到单独的线程和/或巧妙地解释文本的哪些部分被重新编译。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。