将字符串数据从我的Cocoa应用拖到第三方Cocoa应用
我想从tableview中拖出一行,将其放到Mac OS X 10.6中的任何其他NSTextField中,并删除一个文本字符串 在我的应用程序中(在NSTableView和NSBrowser之间)已经可以进行拖放操作,但是我没有成功地将任何数据放到粘贴板上,这些数据可以被源应用程序以外的应用程序接受 以下是我尝试过的代码,我认为当我进入其他NSTextField时,这些代码足以让“hello”一词被“粘贴”起来:将字符串数据从我的Cocoa应用拖到第三方Cocoa应用,cocoa,drag-and-drop,clipboard,pasteboard,Cocoa,Drag And Drop,Clipboard,Pasteboard,我想从tableview中拖出一行,将其放到Mac OS X 10.6中的任何其他NSTextField中,并删除一个文本字符串 在我的应用程序中(在NSTableView和NSBrowser之间)已经可以进行拖放操作,但是我没有成功地将任何数据放到粘贴板上,这些数据可以被源应用程序以外的应用程序接受 以下是我尝试过的代码,我认为当我进入其他NSTextField时,这些代码足以让“hello”一词被“粘贴”起来: -(BOOL) tableView:(NSTableView *)tableVi
-(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:[nsKeyedArchivedRootObject:@“Hello!!”]]
Woody将此添加到控制器类的
awakeFromNib
:
- (void)awakeFromNib {
[tableView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO];
// [tableView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES];
}
(这是假设您有一个连接到名为tableView
的tableView的IBOutlet
)。确保在唤醒fromnib
或更高版本中执行此操作。(例如,如果您试图在控制器类的init
方法中执行此操作,您的nib文件将尚未完全加载,并且您的IBOutlet
将全部为nil
,消息将无效)
默认情况下,大多数拖动操作将限于本地应用程序,而不是所有应用程序。
forLocal:
参数指定是指应用程序本地(在同一应用程序中)的拖动操作,还是指非本地(表示所有应用程序)的拖动操作。注释掉的行基本上就是tableView所做的。就是这样。正如你所说,把那条线插进去,现在所有的引擎都启动了。谢谢