Странное взаимодействие NSPasteboard и TextEdit - PullRequest
3 голосов
/ 16 ноября 2010

Я перетаскиваю строку из двух мест в моем приложении.Один из пользовательского NSView и один из NSTableDataSource делегата.Первый позволяет перетаскивать текст в приложение TextEdit, второй - нет.Я могу перетащить из обоих в другие приложения, такие как Terminal или TextMate.Насколько я могу судить, я использую почти одинаковый код для обоих.

Я пытаюсь выяснить, что не так.Это работает в принципе, потому что я могу перетащить в некоторые приложения.Но что происходит с TextEdit?

Из пользовательского 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-plain-text",
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

Итак, насколько я могу судить, оба должны вести себя одинаково.Но это не так.Идеи?

...