- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个使用 NSTextView 的 Cocoa 文本编辑器。是否可以更改文本某些部分的颜色?
最佳答案
您应该将 Controller 添加为 NSTextView
([textView textStorage]
) 的 NSTextStorage
对象的委托(delegate),然后实现该委托(delegate)方法 ‑textStorageDidProcessEditing:
。每当文本更改时都会调用此方法。
在委托(delegate)方法中,您需要使用 NSTextView
的 -textStorage
方法从 TextView 中获取当前的 NSTextStorage
对象。 NSTextStorage
是 NSAttributedString
的子类,包含 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/
在这个 fiddle 上,函数完美地完成了工作,但我需要稍微调整连接。 该点击甚至需要是父 div 的 addClass(深色/浅色)(true 或 false)。 如果是深色,则添加 Bright
我正在使用 Windows.UI.ViewManagement.UISettings 来获取系统强调色,但该类似乎没有任何亮/暗模式的方法或属性。我找不到此功能的文档,我该如何检测? PS:我正在制作
在使用 iOS 13 在明暗模式之间切换时,我遇到了显示键盘的异常行为。 该 View 有一个 inputAccessoryView 供用户输入消息。当然后在键盘显示的情况下切换亮/暗模式时,亮/暗模
我正在开发一个支持多个主题的 iOS 应用程序。有些主题使用深色背景,有些使用浅色。一些默认图标在深色/浅色背景中不可见。我在 xcassets 中看到一个选项,可以为不同的颜色模式添加图像。我的目标
一些上下文:Sciter (纯 win32 应用程序)已经能够呈现类似 UWP 的 UI: 在深色模式下: 在灯光模式下: Windows 10.1803 在设置小程序中引入深色/浅色开关 as se
我是一名优秀的程序员,十分优秀!