在 UITextView 上替换属性文本时保持自定义属性

Posted

技术标签:

【中文标题】在 UITextView 上替换属性文本时保持自定义属性【英文标题】:Maintain custom attributes when replacing attributed text on UITextView 【发布时间】:2016-11-18 21:01:28 【问题描述】:

我有一个可编辑的 UITextView,它加载了属性字符串。此属性化字符串由应用程序设置的自定义属性加载。出于这个原因,我总是将这些自定义属性添加到 textView 的typingAttributes

每当我输入文本时,它都会按预期工作,添加的文本会设置自定义属性,但每当我使用预测性建议替换单词时,整个单词都会设置为没有自定义属性。

据我所知,每次以编程方式设置属性文本时,typingAttributes 都会自动清除。因此,似乎在选择预测建议时,文本是以编程方式设置的,因此我丢失了所有自定义属性。

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题,在进一步研究之后,我发现没有私有 API 就没有办法做到这一点。但是,在某些情况下,您可以通过在文本视图的 textStorage 中覆盖 replaceCharactersInRange:withAttributedString: 并在那里重新插入您的自定义属性来解决此问题。

【讨论】:

以上是关于在 UITextView 上替换属性文本时保持自定义属性的主要内容,如果未能解决你的问题,请参考以下文章

由于 UITextView 中的自定义行距,文本选择不正确

用属性文本替换文本并向其添加操作

当弹出框被解除时,保持 UITextView 中的文本突出显示

当文本设置为“属性”时,具有自定义字体的 UITextView 不起作用

用户开始输入时如何记住 UITextView 中的文本属性

UITextView如何将光标保持在键盘上方