NSString在添加到邮件正文时丢失了新行

时间:2013-01-01 16:23:59

标签: iphone ios cocoa nsstring mfmailcomposeviewcontroller

我将一些文字存储为NSString。该文本包含多个段落。当我记录或显示文本时,正确插入新行字符。

但是,当我使用MFMailComposeViewController并将文本添加到邮件正文时,新行将被删除,文本将一起运行。

造成这种情况的原因是什么,以及如何保留格式?

3 个答案:

答案 0 :(得分:4)

我相信你这样做的方式应该有效,如果按行确定,你指的是\n。另一种方法是用\n替换<br>的出现次数,并将作曲家的isHTML标志设置为YES:

NSString *emailString = [myParagraphs stringByReplacingOccurrencesOfString:@"\n" withString:@"<br>"];
[mailComposer setMessageBody:emailString isHTML:YES];                    

答案 1 :(得分:1)

(好吧,如果每个人都从我的评论中写下答案,那么我也会写一个......)

如果您指示视图控制器将文本视为HTML,您可以保留其格式,否则它将被丢弃。请注意,在这种情况下,您必须提供实际的HTML,当然(HTML中的\n没有任何好处)。所以试试:

NSCharacterSet *set = [NSCharacterSet newlineCharacterSet];
NSString *html = [[body componentsSeparatedByCharactersInSet:set]
    componentsJoinedByString:@"<br />"];
[viewController setMessageBody:html isHTML:YES];

答案 2 :(得分:0)

如评论中H2CO3所述,您需要将其包装为HTML内容。

NSString *myEmailBody = @"First Line <br/> Second <br/> Third";
[composer setMessageBody:myEmailBody isHTML:YES];