Ben*_*der 5 cocoa drag-and-drop nsdragginginfo
我正在尝试编写一些完整的准系统代码,我可以将一个简单的'dot.txt'文件拖到NSWindow上并读入数据(并没有比这更好的),但我能够找到的所有示例都使用图像和NSViews等.苹果公司的"拖拽文件内容"部分在其"Cocoa的拖放编程主题"文档中确认拖动到一个普通的NSWindow(而不是NSView等)是可能的,似乎正在讨论我到底是什么我试图做,但作为一个相对新手我仍然发现它的图像和框架混淆参考.
任何人都可以帮助我开始向我展示'registerForDraggedTypes'的位置,而不是把它放在说,'initWithFrame'或'initWithCoder'方法,以及注册哪些类型?一旦我得到窗口识别我的拖动,我可以担心其他'performDragOperation'和'draggingEntered'的东西.
谢谢 :-)
这是我正在研究的代码的一部分.您可以在创建新项目时找到此方法.
-(void)applicationDidFinishLaunching:(NSNotification*)aNotification
{
[window registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]];
}
Run Code Online (Sandbox Code Playgroud)
我也是新手.无论如何,这对我有用.
然后,这很重要.我们必须将此对象连接到window对象以处理此对象中的drop消息
打开MainMenu.xib,将弹出Interface Builder.在Interface Builder中,将"App Delegate"(此对象)连接到"Window"的"委托"插座.(您可以在Inspector面板中找到'delegate'插座)现在,'App Delegate'接收'Window'的事件消息.
然后,在同一个类文件中添加更多方法:
-(NSDragOperation)draggingEntered:(id < NSDraggingInfo >)sender
{
return NSDragOperationGeneric;
}
-(BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender
{
NSPasteboard* pbrd = [sender draggingPasteboard];
// Do something here.
return YES;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |