1

NSMutableAttributedStringNSTextView. 一个是字体样式,另一个是上标,使用NSBaselineOffsetAttributeName如下所示:

aVerseNumberMutableString = NSMutableAttributedString(string: verseNumber.description, 
   attributes: [NSBaselineOffsetAttributeName:NSNumber(double: 6.0), NSFontAttributeName:NSFont(name: "Georgia", size: 12.0)!])

它们完美地工作,直到我在 中选择文本,NSTextView然后触发NSTextView使用NSPopUpButton. 然后上标字体样式恢复为其他文本的样式。这是所有代码行。

// Get the verse number and then add attributes
aVerseNumberMutableString = NSMutableAttributedString(string: verseNumber.description, 
    attributes: [NSBaselineOffsetAttributeName:NSNumber(double: 6.0), NSFontAttributeName:NSFont(name: "Georgia", size: 12.0)!])

// Get the verse and then add attributes
aVerseMutableString = NSMutableAttributedString(string: " " + book.verseText + "  ", attributes: [NSFontAttributeName:NSFont(name: "Georgia", size: 20.0)!])

// Prepend the verse number to the verse
theContent.appendAttributedString(aVerseNumberMutableString)
theContent.appendAttributedString(aVerseMutableString)

我可以看到这是如何发生的,因为我将两个字符串附加在一起,但为什么只有当我选择文本然后触发内容更改时才会发生这种情况NSTextView

问题视频。当我在选择文本之前和选择文本之后更改内容时,只需查看第一个上标。

4

1 回答 1

1

问题不在于属性字符串的创建。这与我如何填充NSTextView内容有关。我正在使用删除视图中的文本

contentTextView.textStorage!.mutableString.setString("")

然后使用

 contentTextView.insertText(getChapterText("1"))

我应该一直使用的是NSTextStorage做这一切。所以现在我有一个,而不是两行代码。

contentTextView.textStorage!.setAttributedString(getChapterText("1"))

现在选择文本,甚至只是在文本视图内单击,都不会像以前那样改变文本的样式。

于 2015-05-13T20:59:15.543 回答