2016-11-15 124 views
0

我正在創建一個將歸因字符串放在粘貼板上的mac獨立服務。當數據被頁面​​訪問時,字符串失去其屬性。我正在使用以下代碼粘貼字符串,將NSReturnTypes值設置爲NSStringPboardType。將nsmutableattributed字符串粘貼到公共粘貼板中丟失屬性頁面

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Yay, I'm a string"]; 

[str beginEditing]; 

[str addAttribute:NSUnderlineStyleAttributeName 
       value:[NSNumber numberWithInt:NSUnderlineByWord] 
       range:NSMakeRange(0,str.length)]; 

[str endEditing]; 

[pboard clearContents]; 
[pboard writeObjects:[NSArray arrayWithObject:str]]; 

非iWork應用程序(如筆記和郵件)可以處理這些屬性,但頁面堅持刪除它們。如何創建可通過頁面,主題和數字處理的粘貼板數據?

更新:突然,iWork將當前樣式應用到粘貼在文檔中已有文本上的文本的第一個換行符上。我假設段落風格是在這背後,但會感謝這裏的任何幫助。

UPDATE2:這似乎是頁面如何從剪貼板接收數據的一個錯誤。

+0

類似,但老問題:[複製NSAttributedString到粘貼板](http://stackoverflow.com/questions/2581407/copy-nsattributedstring-to-pasteboard/2585327#2585327) – Willeke

+0

複製到頁面並粘貼頁面也改變樣式。看起來像Pages中的一個bug。 – Willeke

+0

這確實是一個頁面中的錯誤。 – sakurashinken

回答

1

沒有人給了你做任何事,所以這裏是一個方法不是一個答案,例如:

我假設段落樣式是這背後,但會在這裏得到任何幫助。

不要假設,測試。

寫一個簡單的應用程序,它允許您檢查剪貼板上的內容。然後打開文本編輯&頁面並複製&粘貼應用程序內和應用程序之間的東西。看看剪貼板上的內容。即使當「粘貼和匹配樣式」爲而不是被選中時,頁面也執行一定量的「匹配樣式」粘貼。

當然要注意,這個問題並不限於您的應用程序,就像您從TextEdit(或Word )複製到頁面時看到的那樣。你的目標似乎是複製頁面到頁面複製&粘貼,它可能會也可能不會。

附錄

如果您需要查看剪貼板蘋果幫助有示例代碼來做到這一點,ClipboardViewer。只需比較從TextEdit和Pages複製下劃線的單詞。包括iWork特定數據類型在內的很多差異。

HTH