1

我有在 Mac 上向用户显示的 RTF 文本。现在我需要替换一些文本。文本内嵌了一些图像。当我执行以下代码时,图像会丢失。我正在使用 c#、Mono 和 Monobjc 在 mac 上运行它。

NSText _questionView;

// some initialisation code which I have skipped
//
NSRange range = NSRange.NSMakeRange(0, _questionView.TextStorage.Length);
NSData oldString = _questionView.RTFFromRange(range);
if (oldString != null)
{
   string s = oldString.ConvertRTFToString();
   _questionView.ReplaceCharactersInRangeWithRTF(range, s.ConvertToNSData());
   _questionView.SelectedRange = NSRange.NSMakeRange(0,0); 
   // After this line the inline images are lost.
}
4

1 回答 1

1

您正在丢失图像,因为您将 RTF 内容转换为NSString. NSString只能携带文字,不能携带属性。您应该考虑使用NSAttributedString代替文本操作,以保留 RTF 属性(样式、图像等)。

于 2011-03-21T08:31:02.470 回答