0 cocoa objective-c nsdragginginfo
我在我的应用程序中实现了拖放功能.所有功能都很好但是当我们将图像拖入时NSTableView
,
- (BOOL)performDragOperation:(id < NSDraggingInfo >)sender
Run Code Online (Sandbox Code Playgroud)
方法没有被调用.
任何人都可以告诉我为什么不调用这种方法的原因?
即使我实施这个也...
- (BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender
Run Code Online (Sandbox Code Playgroud)
我们需要更多信息.
"...但是当我们将图像拖入NSTableView时"
你是什么意思"图像",你在哪里(什么应用程序)拖动这个图像?例如,您是指从您正在拖动到应用程序中的表视图的Finder中的图像文件(Picture.png)吗?或者从您自己的应用程序中将一些图像从一个位置拖动到表格视图?
这是你自己的自定义子类NSTableView
吗?因为那是你将会看到-performDragOperation:
或被-prepareForDragOperation:
召唤的唯一地方.默认情况下,NSTableView
将覆盖这些原始NSDraggingDestination方法,比如Bavarious提到的(执行自己面向的tableview型的方法-tableView:validateDrop:proposedRow:proposedDropOperation:
,-tableView:acceptDrop:row:dropOperation:
等等).如果您正在讨论这些方法未在NSTableView
子类中调用的事实,那么请记住文档为-prepareForDragOperation指出的内容:
仅当最新的draggingEntered:或draggingUpdated:消息返回可接受的拖动操作值时,才会调用此方法
因此,首先,您需要确保已注册所需的拖动类型,然后需要实现-draggingEntered
.
另一方面,如果你不是在谈论一个NSTableView
子类,而是一个外部控制器类,那么,是的,那些performDragOperation:
并prepareForDragOperation:
没有被它调用.换句话说,如果你有一个控制器类,比如说MDAppController
,它的设置是一个委托和数据源NSTableView
,将-performDragOperation:
和prepareForDragOperation:
中MDAppController
不会被调用.这些方法适用于NSView
基于类的方法.因此,NSTableView
在NSTableViewDataSource
协议中定义了以下方法:tableView:validateDrop:proposedRow:proposedDropOperation:
.如果在控制器类中实现它,则应该调用它,前提是您已正确设置tableView并且已针对所需的数据类型进行了注册.
归档时间: |
|
查看次数: |
1320 次 |
最近记录: |