将nsmutableattributed字符串粘贴到公共粘贴板中丢失属性页面

将nsmutableattributed字符串粘贴到公共粘贴板中丢失属性页面

问题描述:

我正在创建一个将归因字符串放在粘贴板上的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

这似乎是页面或预期行为中的错误。 https://discussions.apple.com/message/30971829?ac_cid=op123456#30971829

+0

但是你能解决它吗?在该主题中没有任何迹象表明你已经看过剪贴板 - 苹果有一个样本可以帮助你,请参阅我的答案的附录。 HTH – CRD

没有人给了你做任何事,所以这里是一个方法不是一个答案,例如:

我假设段落样式是这背后,但会在这里得到任何帮助。

不要假设,测试。

写一个简单的应用程序,它允许您检查剪贴板上的内容。然后打开文本编辑&页面并复制&粘贴应用程序内和应用程序之间的东西。看看剪贴板上的内容。即使当“粘贴和匹配样式”为而不是被选中时,页面也执行一定量的“匹配样式”粘贴。

当然要注意,这个问题并不限于您的应用程序,就像您从TextEdit(或Word )复制到页面时看到的那样。你的目标似乎是复制页面到页面复制&粘贴,它可能会也可能不会。

附录

如果您需要查看剪贴板苹果帮助有示例代码来做到这一点,ClipboardViewer。只需比较从TextEdit和Pages复制下划线的单词。包括iWork特定数据类型在内的很多差异。

HTH