我想从我的 tableview 中拖动一行并将其放入 Mac OS X 10.6 中的任何其他 NSTextField 中,并删除一串文本。
拖放已经在我的应用程序中工作(在 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 版本的粘贴板标识符,NSStringPBoardType
- 使用 10.6 版本,NSPasteboardTypeString。
- 设置 owner = nil,因为我没有懒惰地提供数据。
- 使用键控归档器:[pboard setData:[NSKeyedArchiver archivedRootObject:@"Hello!!"]]
以上都没有奏效。我认为我的概念是正确的:“编码数据,告诉粘贴板你有什么,然后给它数据”,但由于其他应用程序无法识别它,我怀疑我没有告诉粘贴板正确的数据类型.
我哪里错了?
谢谢,伍迪