Я перетаскиваю строку из двух мест в моем приложении.Один из пользовательского 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
Итак, насколько я могу судить, оба должны вести себя одинаково.Но это не так.Идеи?