代码之家  ›  专栏  ›  技术社区  ›  Joe

奇怪的nspasteboard和textedit交互

  •  3
  • Joe  · 技术社区  · 14 年前

    我正在我的应用程序中从两个位置拖放字符串。一个来自习俗 NSView 还有一个来自 NSTableDataSource 代表。第一个允许我将文本拖到textedit应用程序中,第二个不允许。我可以从这两个应用程序拖动到其他应用程序,如Terminal或TextMate。据我所知,我对这两个都使用了几乎相同的代码。

    我在想怎么了。这在原则上是可行的,因为我可以拖动到一些应用程序。但是文本编辑怎么了?

    从自定义nsview:

    (void)mouseDown:(NSEvent *)theEvent
    {
        NSString *testString = @"TEST";
    
        NSImage *dragImage;
        NSPoint dragPosition;
    
        NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
    
        [pboard declareTypes:[NSArray arrayWithObjects: NSStringPboardType, nil] owner:nil];
        [pboard setString:testString forType:NSStringPboardType];
    
        dragImage = // blah
        dragPosition = [self convertPoint:[theEvent locationInWindow] fromView:nil];
    
        [self dragImage:dragImage
                     at:dragPosition
                 offset:NSZeroSize
                  event:theEvent
             pasteboard:pboard
                 source:self
              slideBack:YES];
        }
    }
    

    从表委托:

    (BOOL)tableView: (NSTableView *)aTableView writeRowsWithIndexes: (NSIndexSet *)indexes toPasteboard: (NSPasteboard *)pboard
    {
        NSString *testString = @"TEST";
    
        [pboard declareTypes:[NSArray arrayWithObjects: NSStringPboardType, nil] owner:nil];
        [pboard setString:testString forType:NSStringPboardType];
    
        return YES;
    }
    

    如果我打印出第一个打印板的类型:

    "public.utf8-plain-text",
    NSStringPboardType,
    

    其次:

    “public.utf8纯文本”,
    NSStringPBoardType,
    

    同样,第一部分的内容:

    2010-11-16 13:56:01.832 XXX[1654:a0f] public.utf8-plain-text:TEST
    2010-11-16 13:56:01.838 XXX[1654:a0f] NSStringPboardType:TEST
    

    其次

    2010-11-16 13:56:05.623 XXX[1654:a0f] public.utf8-plain-text:TEST
    2010-11-16 13:56:05.623 XXX[1654:a0f] NSStringPboardType:TEST
    

    据我所知,这两个人的行为应该是一样的。但他们不是。思想?

    0 回复  |  直到 14 年前