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

时间:2016-11-15 23:16:00

标签: objective-c nspasteboard iwork

我正在创建一个mac独立服务,它将属性字符串放在粘贴板上。当页面访问数据时,字符串将丢失其属性。我使用以下代码粘贴字符串,NSReturnTypes值设置为NSStringPboardType。

    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:这似乎是页面如何从剪贴板接受数据的错误。

2 个答案:

答案 0 :(得分:1)

没有人提供任何东西,所以这里的方法不是答案:

  

我假设段落样式落后于此,但在此感谢任何帮助。

不要假设,测试。

编写一个简单的应用程序,它允许您检查剪贴板上的内容。然后打开TextEdit&页面和副本&在应用中和应用之间粘贴内容。查看剪贴板上的内容。即使“粘贴和匹配样式”未选择

,页面也会进行一定量的“匹配样式”粘贴。

当然注意,此问题不仅限于您的应用,因为您在从TextEdit(或Word )复制到Pages时会看到。您的目标似乎是将Pages复制到Pages copy&粘贴,可能会也可能不会。

<强>附录

如果您在查看剪贴板时需要帮助,Apple会提供示例代码ClipboardViewer。只需在从TextEdit和Pages复制时比较带下划线的单词。包括iWork特定数据类型在内的一些差异。

HTH

答案 1 :(得分:0)

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