【发布时间】:2010-12-22 16:32:21
【问题描述】:
我想从我的 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;
}
//--
我从来没有得到显示我接受 drop 的光标,它只是不起作用。
- 我尝试过的事情:
- 使用 10.5 版本的粘贴板标识符, NSStringPBoardType
- 使用 10.6 版本,NSPasteboardTypeString。
- 设置所有者 = nil,因为我不会懒惰地提供数据。
- 使用键控存档器:[pboard setData:[NSKeyedArchiver archivedRootObject:@"Hello!!"]]
以上方法均无效。我认为我的概念是正确的:“编码数据,告诉粘贴板你有什么,然后给它数据”,但由于其他应用程序无法识别它,我怀疑我没有告诉粘贴板正确的数据类型.
我哪里出错了?
谢谢, 伍迪
【问题讨论】:
标签: cocoa drag-and-drop clipboard pasteboard