0

我正在创建一个将属性字符串放在粘贴板上的 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:这似乎是页面如何从剪贴板接受数据的错误。

4

2 回答 2

1

还没有人给你任何东西,所以这里有一种方法,而不是这样的答案:

我假设段落样式在此之后,但希望在这里提供任何帮助。

不要假设,测试。

编写一个简单的应用程序,让您检查剪贴板上的内容。然后打开 TextEdit & Pages 并在应用程序内部和应用程序之间复制和粘贴内容。查看剪贴板上的内容。即使未选择“粘贴和匹配样式”,Pages 也会进行一定数量的“匹配样式”粘贴。

当然请注意,此问题不仅限于您的应用程序,正如您在从 TextEdit(或 Word)复制到 Pages 时会看到的那样。您的目标似乎是将页面复制到页面复制和粘贴,这可能会也可能不会。

附录

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

HTH

于 2016-11-18T09:30:27.427 回答
0

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

于 2016-11-23T05:54:30.030 回答