Я хочу перетащить строку из моего табличного представления и поместить ее в любой другой NSTextField в Mac OS X 10.6, и у меня будет пропущена строка текста.
Перетаскивание уже работает в моем приложении (между NSTableView и NSBrowser), но у меня не получилось поместить какие-либо данные на монтажную панель, которые могут быть приняты приложениями, отличными от исходного приложения.
Вот код, который я попробовал, и который, как мне показалось, будет достаточно, чтобы слово «привет» можно было «вставить», когда я заскочил в какой-нибудь другой NSTextField:
-(BOOL) tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
[pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
[pboard setString:@"hello" forType:NSStringPboardType];
return YES;
}
// -
Я никогда не получаю курсор, который показывает мне, что падение будет принято, и оно просто не работает.
- Вещи, которые я пробовал:
- Используя версию 10.5 идентификатора Pasteboard,
NSStringPBoardType
- Использование версии 10.6, NSPasteboardTypeString.
- Установка владельца = ноль, поскольку я не предоставляю данные лениво.
- Использование архиватора с ключами: [pboard setData: [NSKeyedArchiver archivedRootObject: @ "Hello !!"]]
Ничего из вышеперечисленного не сработало. Я думаю, что у меня есть правильные концепции: «Кодировать данные, сообщать монтажному блоку, что у вас есть, а затем передавать данные», но, поскольку другие приложения не распознают его, я подозреваю, что не сообщаю монтажному щиту правильный тип данных ,
Куда я иду не так?
Спасибо,
Древесный