gpt4 book ai didi

macos - 无法拖放到 NSOutlineView 的整行上

转载 作者:行者123 更新时间:2023-12-03 16:21:57 25 4
gpt4 key购买 nike

我有一个 NSOutlineView,其中实现了拖放,其值通过绑定(bind)填充。

一切都按照我想要的逻辑工作,这基本上是只能在根级别项目之间放置的能力,并且不允许将子项拖放到任何地方。因此,如果您愿意,我只是尝试重新订购。

我的问题在于我的 NSOutlineView 在 View 上接受放置的位置。看来它只允许我落在该行的最左侧。我似乎无法落到其他地方。我的行是基于 View 的,并且有 ImageView 。

This one is working这表明它正在工作

Here is it not working.这是它不起作用。

这是我的acceptDrop代码。

- (NSDragOperation)outlineView:(NSOutlineView *)ov validateDrop:(id < NSDraggingInfo >)info proposedItem:(id)item proposedChildIndex:(NSInteger)childIndex {

// Check to see what we are proposed to be dropping on
NSTreeNode *targetNode = item;
// A target of "nil" means we are on the main root tree
if (targetNode == nil) {
//If were dropping on the physical item lets say no
if (childIndex == NSOutlineViewDropOnItemIndex) {
return NSDragOperationNone;
}
//otherwise we are in-between so lets return move.
return NSDragOperationMove;
} else {
return NSDragOperationNone;
}
}

这是否可能与我的 View 设置有关,而不是与我的 NSOutlineView 代码有关?

更新:

无论我的光标在哪里,它都适用于最顶行,但仅适用于所有其他行的最左侧。

最佳答案

这解决了它。

NSUInteger maxNumberOfRows = [[_hostController arrangedObjects] count];
// Check to see what we are proposed to be dropping on
NSTreeNode *targetNode = item;
// A target of "nil" means we are on the main root tree
if (targetNode == nil) {
//If were dropping on the physical item lets say no
if (childIndex == NSOutlineViewDropOnItemIndex) {
[ov setDropItem:nil dropChildIndex:maxNumberOfRows];
return NSDragOperationMove;
}
[ov setDropItem:nil dropChildIndex:childIndex];
return NSDragOperationMove;
} else {
//If its not a host we dont want to allow drop
if (![self isHost:[item representedObject]]) {
return NSDragOperationNone;
}
if (childIndex == NSOutlineViewDropOnItemIndex) {
[ov setDropItem:nil dropChildIndex: [ov rowForItem:item]];
return NSDragOperationMove;
}
return NSDragOperationNone;
}

关于macos - 无法拖放到 NSOutlineView 的整行上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com