如何拖放obj-c中的'.txt'文件
问题描述:
我想写一些绝对准系统代码,我可以将一个普通的'dot.txt'文件拖到NSWindow上并读入数据(并没有什么比这更有趣),但所有的例子,我已经能够找到使用图像和NSViews等。苹果公司的“拖动文件内容”部分在其“拖放编程主题为可可”文档确认拖到一个平原NSWindow(而不是NSView等)是可能的,似乎正在讨论我正在尝试做什么,但作为一个相对的新手,我仍然发现它对图像和框架的引用混淆。如何拖放obj-c中的'.txt'文件
任何人都可以请帮助我开始通过向我展示'registerForDraggedTypes'除了说'initWithFrame'或'initWithCoder'方法以及注册哪些类型之外的位置吗?一旦我看到窗口识别我的拖动,我可以担心其他'performDragOperation'和'draggingEntered'的东西。
感谢:-)
答
这是我正在处理的代码的一部分。 您可以在创建新项目时找到此方法。
-(void)applicationDidFinishLaunching:(NSNotification*)aNotification
{
[window registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]];
}
我也是新手。无论如何,这对我有用。
然后,这很重要。 我们必须将此对象连接到窗口对象以处理此对象中的放置消息
打开MainMenu.xib,并且会弹出Interface Builder。 在Interface Builder中,将'App Delegate'(此对象)连接到'Window'的'委托'出口。 (您可以在Inspector面板中找到'委托'插座) 现在,'应用程序委托'接收'窗口'事件消息。
,然后在同一个类文件增加了更多的方法:
-(NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
return NSDragOperationGeneric;
}
-(BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard* pbrd = [sender draggingPasteboard];
// Do something here.
return YES;
}
这是OK的,你必须具有'window'出口的应用程序委托的具体情况,但通常一个窗口会被管理通过'NSWindowController',你可以在窗口控制器的'-windowDidLoad'方法中注册拖动类型。一般来说,答案是正确的。 –