这是不是一个特定的错误,它更多的不知道应该怎么做。

我有一个NSTextView,我需要画文本的特定范围的背景当在文本视图的特定部分,用户点击。我试过,但我刚刚得到的,有时文本失去前景色和背景不跨越整个范围的感觉反常行为:

NSLayoutManager *layoutManager = [myTextView layoutManager];
[layoutManager removeTemporaryAttribute:NSBackgroundColorAttributeName
                      forCharacterRange:range];
[[myTextView layoutManager] setTemporaryAttributes:attributes 
                                 forCharacterRange:range];

为了简单起见假设范围始终是一个有效的字符串(它是在我的测试环境中)。

有帮助吗?

解决方案

您发布的代码看起来是正确的我。

  

有时文本失去前景   颜色

这是前景色,你正在使用一个临时属性?注意,使用-setTemporaryAttributes:forCharacterRange: (而不是附加到)临时文本属性字典给定范围内(参见-addTemporaryAttributes:forCharacterRange:用于附加)。

  

或背景不跨越   的整个范围内

没有看到你的代码的其余部分我可以建议的唯一的事情是确保让您range值是正确的,当这种情况发生。尝试NSLog'ing它,你使用它的权利之前检查你再现了问题之后的日志。

您可能还需要确保设置背景颜色为临时属性后,你没有从该范围内的部分在你的代码移除属性的其他地方。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top