当我将行从NSTableView拖到另一个NSOutlineView时,NSOutlineView会显示黄色的突出显示边框。如何避免这种情况?
确切地说,只有当我将表格中的行拖到NSTableView的空闲空间(即不在任何项目中)时,才会发生这种情况。但是,当我直接在NSOutlineView中的项目上拖动行时,不会显示黄色边框,但是(当然)项目是自己选择的。
NSOutlineViews数据源中outlineView:validateDrop:proposedItem:proposedChildIndex:
的重要部分如下所示:
- (NSDragOperation)outlineView:(NSOutlineView *)outlineView
validateDrop:(id <NSDraggingInfo>)info
proposedItem:(id)item
proposedChildIndex:(NSInteger)index
{
if ([info draggingSource] == myOtherTableView) {
[outlineView setDropItem:item
dropChildIndex:NSOutlineViewDropOnItemIndex];
return NSDragOperationMove;
}
return NSDragOperationNone;
}
谢谢你的帮助!
最佳答案
如果NSOutlineView
建议不要放置任何特定项(导致看到的是整个边框突出显示),它将传入nil的item
和NSOutlineViewDropOnItemIndex的proposedChildIndex
。您可以对此进行测试,以判断NSOutlineView
何时提出该丢弃操作,并返回NSDragOperationNone
以完全不允许该区域上的丢弃操作。
- (NSDragOperation)outlineView:(NSOutlineView *)outlineView
validateDrop:(id <NSDraggingInfo>)info
proposedItem:(id)item
proposedChildIndex:(NSInteger)index
{
if ([info draggingSource] == myOtherTableView) {
if (item == nil)
return NSDragOperationNone;
else
{
[outlineView setDropItem:item
dropChildIndex:NSOutlineViewDropOnItemIndex];
return NSDragOperationMove;
}
}
return NSDragOperationNone;
}
关于objective-c - NSOutlineView:热门以避免拖动项目时出现黄色边框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3439352/