我正在创建一个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应用程序(如notes和mail )可以很好地处理属性,但是页面坚持要删除它们。如何创建可由页面、主题和数字处理的黑板数据?
更新:显然,iWork将当前样式应用到粘贴在文档中现有文本上的文本上的第一行。我假设段落风格是背后的原因,但希望在这里提供任何帮助。
UPDATE2:在页面如何接受剪贴板上的数据方面,这似乎是一个错误。
发布于 2016-11-23 05:54:30
它似乎是页面中的一个bug,或者是预期的行为。cid=op123456#30971829
发布于 2016-11-18 09:30:27
还没有人给你提供任何东西,所以这里有一个方法,而不是这样的答案:
我假设段落风格是背后的原因,但希望在这里提供任何帮助。
别假设,测试。
编写一个简单的应用程序,允许您检查剪贴板上的内容。然后打开TextEdit & Pages,并在应用程序内部和应用程序之间复制和粘贴东西。看看剪贴板上有什么。即使没有选择“粘贴和匹配样式”,页面也会粘贴一定数量的“匹配样式”。
当然,请注意,这个问题并不局限于您的应用程序,当您从TextEdit (或Word等)复制到页面时会看到这一点。你的目标似乎是复制页面到页面复制粘贴,这可能是可能的,也可能是不可能的。
增编
如果您需要帮助查看剪贴板,苹果有示例代码来完成它,ClipboardViewer。从TextEdit和页面复制时,只需比较您的下划线单词。有很多不同之处,包括iWork特定的数据类型。
HTH
https://stackoverflow.com/questions/40621423
复制相似问题