NSRTFPboardType&粘贴到gmail浏览器窗口?

时间:2015-06-17 12:02:42

标签: objective-c cocoa rtf nspasteboard

我有一个NSTextView,其中包含一些带属性的文本(语法高亮显示)。我尝试使用复制选项来保持语法突出显示,以便将其粘贴到Gmail文本窗口中。目前,当我复制粘贴时不会出现突出显示,但是如果我直接从此stackoverflow页面复制以下部分:

- (void) copyAsRTF
{
    NSPasteboard *pateboard = [NSPasteboard generalPasteboard];
    NSData * rtfData = [[self textStorage] RTFFromRange: [self selectedRange]
                                     documentAttributes: nil];

    if (rtfData)
    {
        NSString * test = [[NSString alloc] initWithData: rtfData
                                                encoding: NSUTF8StringEncoding];

        [pateboard declareTypes: @[NSRTFPboardType]
                          owner: self];

        [pateboard setData: rtfData
                   forType: NSRTFPboardType];
    } // End of we had data
} // End of copyAsRTF

并将其粘贴到gmail中,它会粘贴完整语法高亮没问题。上面的代码是我用来生成我的RTF代码的,我可以确认它确实生成了正确的RTF,因为我生成了test变量。

我在这里做错了什么想法?根据我的理解,这应该工作。

(我应该注意到我已尝试过多种浏览器 - Chrome,Safari和Firefox)。

2 个答案:

答案 0 :(得分:2)

正如在评论中发现的那样,为了使用chrome,您需要将文本复制为html(public.html粘贴板类型)或者可能都是html和rtf类型。

答案 1 :(得分:1)

基于对@ Sega-Zero的评论,我想出了以下内容(有点草率,但它的确如此)。根据我的具体需求,html颜色和& font应与属性字符串匹配,因此我枚举并创建一个html变量。这适用于Safari,Chrome和Firefox。

x = Cellify(mean_2, mean_4, mean_8, ...);