2016-06-11 54 views
0

从OSX上的chrome复制URL并粘贴到可编辑的WebKit webview时,不会粘贴任何东西。WebKit WebView粘贴:动态UTI失败

我证实,有上NSPasteboard并且NSPasteboardItem项目有以下几种类型:

"dyn.ah62d4rv4gu8zs3pcnzme2641rf4guzdmsv0gn64uqm10c6xenv61a3k", 
"dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu", 
"public.utf8-plain-text", 
"dyn.ah62d4rv4gu8yg55wqzkgc65yqzvg82pwqvdg22p0r73fk8puqyuda8b1gy5xerwdgk2a", 
"dyn.ah62d4rv4gu8yg55wqzkgc65yqzvg82pwqvdg22p0r73fk8puqyuda8b1gy5xerwdg3cu" 

我明白,这些都是自动生成的,并映射到WebURLsWithTitlesPboardType。

在从Safari浏览器执行相同的操作,以web视图,它的工作原理,因为它只包含

"public.utf8-plain-text" 

是否有处理这些尿路感染更好的已知的解决方法?

回答

0

Webkit webviews似乎不支持动态UTI的粘贴操作。通过在webview中截取粘贴时重新创建没有这些UTI的粘贴板项目,我解决了这个问题:doCommandBySelector:

- (void)cleanupPasteboard:(NSPasteboard *)pasteboard { 
    NSMutableArray *newItems = [[NSMutableArray alloc] init]; 
    for (NSPasteboardItem *item in pasteboard.pasteboardItems) { 
     NSPasteboardItem *newItem = [[NSPasteboardItem alloc] init]; 
     for (NSString *type in item.types) { 
      if (![type hasPrefix:@"dyn"]) { 
       [newItem setData:[item dataForType:type] forType:type]; 
      } 
     } 
     [newItems addObject:newItem]; 
    } 
    [pasteboard clearContents]; 
    [pasteboard writeObjects:newItems]; 
}