我有一个基于视图的NSTableView,它接受从finder中删除的图像.我希望能够在指定的放置位置插入新图像(左下方示例)并防止行本身掉落(下面的右侧示例). 我看了一个委托方法和NSTableView属性
我看了一个委托方法和NSTableView属性和方法,但看不到防止drop-on-rows的方法.有任何想法吗?
图:光标尚未在屏幕截图中呈现.在左侧示例中,我拖动一个名为Pic_3.png的文件,NSTableView通过在插入新图像的位置绘制一条线来响应.在右边的示例中,我继续拖动并将其放置在表视图中的现有行上.插入现有项目没有任何意义,所以我想阻止这种行为.
委托方法func tableView(_ tableView: NSTableView, validateDrop info: NSDraggingInfo, proposedRow row: Int, proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation
处理拖动行为.参数proposedDropOperation传递当前的NSTableView.DropOperation.如果操作是.则返回指定的NSDragOperation,否则返回.none.例如
if dropOperation == .above { info.animatesToDestination = true return .move } else { return .none }
另一个DropOperation案例.on表示拖动该行.