在 UITextView 上调用 setAttributedText 会重置字体大小,我不知道为啥

Posted

技术标签:

【中文标题】在 UITextView 上调用 setAttributedText 会重置字体大小,我不知道为啥【英文标题】:Calling setAttributedText on UITextView resets the font size, and I can't figure out why在 UITextView 上调用 setAttributedText 会重置字体大小,我不知道为什么 【发布时间】:2014-12-16 07:43:45 【问题描述】:

我在 *** 上阅读了有关 this annoying bug 的信息,如果您不将 UITextView 设为可选,设置文本会导致字体重置,这非常烦人。

这似乎只适用于设置正常的text,而不是attributedText,因为当我设置attributedText 时,它仍然会重置字体,即使我将文本视图设置为可选。

这真的很容易复制。例如,在情节提要中创建一个文本视图(我是怎么做的),设置字体,然后使用 myTextView.attributedText = NSAttributedString(string: "Lorem ipsum dolor.") 将属性文本设置为纯字符串,然后它会被重置。

我该如何阻止这种情况?超级烦人。

【问题讨论】:

由于字体包含在NSAttributedString(与NSFontAttributedName)中,我不认为这是正常行为,但至少,我并不感到惊讶。也许通过迭代[myTextView attributedText] 的前一个NSFontAttributedName 并将其应用于NSAttributedString 【参考方案1】:

我遇到了同样的问题,并以实用主义的方式解决了它,因为我确信这是 ios 中的一个错误。所以,我的看法可能不是最好的解决方案,但会奏效。为UITextView 编写一个类别,其中使用-(void)setAttributedTextWithoutResettingFont:(NSAttributedString *)attributedText; 之类的方法并实现它,以便您首先将当前字体保存在临时变量中,然后在@987654324 上调用实际的设置器setAttributedText: @ 最后使用保存在临时变量中的字体再次更新字体。

【讨论】:

我不完全明白你的意思。你能详细说明一下吗? 好吧,你不明白哪一部分? :) 你知道类别是什么吗?

以上是关于在 UITextView 上调用 setAttributedText 会重置字体大小,我不知道为啥的主要内容,如果未能解决你的问题,请参考以下文章

为啥 textView:shouldInteractWithTextAttachment:inRange: 永远不会在 UITextView 委托上被调用?

UITextView 调用前一个号码

UITextView textViewShouldEndEditing / textViewDidEndEditing 未调用

UITextView 类中未调用 UIAlertView 委托方法

iOS 6,StroryBoards:在模态转场后更新主场景上的 UITextView

在 iOS 7 上成为第一响应者后,UITextView 不会滚动到插入符号