2013-01-01 17 views
0

我將一些文本保存爲NSString。該文本包含多個段落。當我登錄或顯示文本時,新的行字符被正確插入。NSString添加到郵件正文時丟失新行

但是,當我使用MFMailComposeViewController並將文本添加到郵件正文中時,新行將被刪除並且文本一起運行。

這是什麼原因造成的,我該如何保存格式?

+2

您可以通過使視圖控制器將文本視爲HTML來保留格式。 – 2013-01-01 16:27:58

+0

謝謝 - 我已經這樣做了。 –

+0

確定它是有效的HTML?也許控制器正在拆分頭髮:P – 2013-01-01 16:42:30

回答

1

(OK,如果每個人都從我的評論寫一個答案,那麼我寫一個太...)

如果您指示視圖控制器來處理文本作爲HTML,你可以保留其格式否則會被丟棄。請注意,在這種情況下,您必須爲其提供實際的HTML,當然(HTML中的\n不太好)。因此請嘗試:

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

考慮到你的回答比我的回答好,我會給你+1,但是我在發佈評論前已經開始回答了。事實證明,使用iPad上的代碼編寫答案令人痛苦地慢下來: –

+1

@ 0x7fffffff讓你回到:P我知道那種感覺,兄弟。 – 2013-01-01 16:43:03

+0

這很有趣,我已經從那些急於爲Xcode for iPad着急的人看過帖子,但你能想象這會有多糟糕嗎? –

4

我相信你這樣做的方式應該是有效的,如果通過換行符指向\n。一個替代方案是用<br>取代的\n的出現和設定作曲家的isHTML標誌是:

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

正如意見中提到的H2CO3,你需要把它包裝成HTML內容。

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