2013-11-26 129 views
1

我的應用程序允許用戶通過單擊將屬性應用於文本視圖的屬性文本屬性的某些格式按鈕來格式化UITextView中的文本。我想讓用戶從一個UITextView複製他們的格式化文本,並使用標準剪貼板和標準剪切/複製/粘貼菜單將其粘貼到另一個文本中。如何將豐富的文本粘貼到UITextView中?

目前,如果我從UITextView中複製格式化文本並將其粘貼到郵件應用程序中的新郵件中,格式化將被保留 - 因此格式化文本的複製將自動進行。但是,如果我將格式化的文本粘貼到另一個UITextView中,則只會顯示純文本。

通過在Text Programming Guide for iOS的「粘貼的選擇」一節之後,我能夠覆蓋的UITextView的粘貼方法和攔截粘貼的內容:

- (void)paste:(id)sender { 
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; 
    NSLog(@"types available: %@", [pasteboard pasteboardTypes]); 
    for (NSString *type in [pasteboard pasteboardTypes]) { 
     NSLog(@"type %@ (%@): %@", type, NSStringFromClass([[pasteboard valueForPasteboardType:type] class]), [pasteboard valueForPasteboardType:type]); 
    } 
} 

這讓我發現,剪貼板包含內容格式如下:com.apple.rtfd,public.rtf,public.text和「Apple Web Archive粘貼板類型」。文本的值是純文本字符串,rtf的值是一個RTF字符串,兩種Apple格式的值是NSData。

這是我卡住的地方。如何將這些項目中的一個從剪貼板數據轉換爲爲UITextView設置的屬性字符串?

或者更好的是,有沒有辦法將UITextView配置爲在粘貼時自動接受格式化文本,與複製時自動提供格式化文本的方式相同?

+2

默認情況下礦井工作正常,並接受粘貼的格式化文本。您確定已將uitextview設置爲處理富文本。您是否嘗試複製格式化文本並將其粘貼回相同的uitextview。 –

+0

如果我將格式化文本粘貼回相同的文本視圖,它仍然顯示爲純文本。 – arlomedia

+0

我希望能夠擁有一些屬性,但不是全部,還有更多的自定義粘貼/複製行爲。查看一些可能有價值的見解:http://stackoverflow.com/a/38211885/1054573 –

回答

5

鄧肯上面問,「你確定你有uitextview設置處理富文本。」我沒有意識到這個設置,但我再次檢查了UITextView類的引用,發現了allowsEditingTextAttributes屬性。之前我沒有使用過,因爲我提供了自己的格式化按鈕,並且不需要啓用系統粗體/斜體/下劃線選項。但是當我爲UITextView設置該屬性爲YES時,它開始自動接受格式化文本。呼!

相關問題