【发布时间】:2010-08-09 11:01:24
【问题描述】:
当我将行从 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;
}
感谢您的帮助!
【问题讨论】:
-
选择颜色边框似乎表明放置是有效的;即,用户可以放在这里,拖动的项目实际上会下降,而不是弹回。这是一个功能,我不明白你为什么要屏蔽它。
-
@Peter Hosey - 您应该将其移至答案。有时,“我该怎么做”的答案是“不要那样做”。
标签: objective-c cocoa drag-and-drop nstableview nsoutlineview