gpt4 book ai didi

objective-c - 拖出 NSTableView 以移除

转载 作者:太空狗 更新时间:2023-10-30 03:47:36 25 4
gpt4 key购买 nike

我有一个包含许多项目的 NSTableView。我想实现从 NSTableView 的内部 拖动到 外部 以删除拖动的项目。 (有点像 Safari 如何“噗”掉书签。)

NSTableView 已经配置为支持拖放重新排序,并接受来自应用程序中另一个 NSTableView 的拖放,所以虽然大部分都已连接,但我只是缺少一小部分功能。

更新:

感谢 Sean 迄今为止的帮助。虽然我可以收到一个项目在漂浮回到其原始位置后已被拖出的通知(请参阅他的回答的评论),但我希望在释放鼠标按钮后立即收到通知。

当前的行为是让用户拖放一个项目,拖动被视为“无效”,并让项目动画回到其原始位置。 然后收到通知,我可以删除该项目,但从 UI 的角度来看(对用户而言)有点困惑。

最佳答案

听起来您的 TableView 已经在实现 NSDraggingSource协议(protocol)。在这种情况下,您可以添加方法 draggedImage:endedAt:operation: (操作系统 10.7 之前)或 draggingSession:endedAtPoint:operation: (OS 10.7) 将提供操作 NSDragOperationNoneoperation拖拽失败时的参数。因此,您可以检查此操作是否已通过,然后删除对象并将其从 View 中移除。

换句话说,它看起来像这样(在 10.7 中):

-(void)draggingSession:(NSDraggingSession *)session endedAtPoint:(NSPoint)screenPoint operation:(NSDragOperation)operation {
if (operation == NSDragOperationNone) {
//delete object, remove from view, etc.
}
}

关于objective-c - 拖出 NSTableView 以移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7707034/

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