问题标签 [nsdragginginfo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
684 浏览

objective-c - draggingEntered 不触发

我有一个 NBox 的子类,我想在一个名为 dragBox 的画布上拖动它。我不明白为什么以下代码没有触发 draggingEntered 。我得到了一张漂亮的后退图像,但没有一个目的地代表被解雇。为什么?

0 投票
1 回答
247 浏览

objective-c - 用于拖动 vom NSTableView 的 NSDragOperation 为 -1

简单设置:

我有一个NSTableView允许将项目拖到NSView子类的方法。

在视图中,我正在通过NSDraggingInfo's 方法检查拖动操作draggingSourceOperationMask

NSDragOperation那里收到的水滴有-1。从视图开始的拖动具有预期的拖动操作(移动、复制,取决于具体情况)。但是表格视图中的拖动完全搞砸了。知道那里发生了什么..?

有什么我可以做的- (void)tableView:(NSTableView *)tableView draggingSession:(NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint forRowIndexes:(NSIndexSet *)rowIndexes吗?

非常感谢任何提示。

0 投票
0 回答
269 浏览

drag-and-drop - 将 NSDraggingSource 与 NSMatrix 耦合的问题

想象一下这个人口稀少的NSMatrix五个彩色列 (0-4),最近添加的列是橙色的。这些填充有带有 (x,y) 坐标的替代对象(随机数)。“空白”单元格具有替代的 NULL 对象。这有点工作。

在此处输入图像描述

我在顶部有四个数据“源”(AD),我想将它们拖到矩阵上。它们标有代表目标行 (0-3) 的数字。 即使我认为我做得对,我也无法让这些拖动NSDragSource

示例行为:

如果我将单元格 B(带有 0,2)拖到列(4,y)的“中心”区域,它的内容将与两个空单元格(第 0 行和第 2 行)合并。如果我拖到列的左侧或右侧区域,我将得到一个前置或附加列——在这种情况下,是一个稀疏列。

如果我将单元格 A(带有 0,1,2,3)拖到任何单元格上,它将创建一个新列。

如果我将单元格 D 拖到 (0,y) 或 (4,y) 列上,它将合并;将其拖动到其他任何地方将创建新的稀疏列。在任何地方使用 C 执行此操作将创建一个新的稀疏列。

可以推测,这种复杂的合并行为将我带到了这里,而不是说,NSTableView.

我没有太多识别左/中/右区域或合并数据或创建新列的问题——我需要帮助创建正确的NSPasteboard交互和/或NSDragging设置:( 我最终想NSManagedObject在将识别填充哪些行的核心数据,但我从这里开始)。

  1. 我正在尝试制作一个NSStringPboardType附加到四个NSTextFields可拖动的原型。没有骰子。
  2. 我可以从粘贴板上NSMatrix接收字符串(或)。NSFilenamesPboardType那里没问题。

一旦我收到适当的传入单元格(字符串),我就可以浏览它并确定是与当前列合并还是创建一个新列——同样,这不是问题。

我做过的事情...

1) 子类化 NSTextField...

2)注册文本字段的拖动类型并尝试拖动会话...

我的draggingSession:sourceOperationMaskForDraggingContext:方法甚至从未被调用过。

我是这个NSPasteboard东西的新手,所以任何帮助将不胜感激。

0 投票
2 回答
629 浏览

cocoa - 如何通过在 NSTableView 中拖动行来允许移动和复制?

我有一个NSTableView我希望能够拖放行来移动它们,并在按住 Option 的同时拖放(根据Apple 的文档)来复制它们。

我的视图控制器中有以下代码,这也是dataSource表格视图的代码。

  1. 如何使默认的拖动操作移动,并且仅在按住 Option 键时进行复制?目前,它默认为立即复制。
  2. tableView:acceptDrop:row:dropOperation:我如何判断该操作是复制操作还是删除操作?
0 投票
1 回答
191 浏览

xcode - 拖放后窗口失去焦点

我正在使用 swift 开发一个 xcode mac 应用程序。我将文件拖放到 NSTableView 中,它工作正常,除了从文件系统拖放操作后,窗口失去焦点。

拖拽操作完成后如何设置应用焦点?

0 投票
1 回答
1140 浏览

swift - NSPasteboard 复制拖放文件

虽然我有工作代码,但我对我是否采取了正确的方法感到困惑,我正在寻求NSPasteboard是否有人可以帮助我澄清最佳方法。

自 2012 年以来,Apple 似乎没有编写任何关于拖放的完整文档,并且在那个时候,您应该在其中实现它的方式(尤其是沙盒应用程序)似乎已经被弃用和改变。经过一番折腾,我发现当您访问它的路径属性时,拖动的粘贴板提供的文件 URL 显示了它的真实路径(而不是构成 url 的匿名数字字符串),这使得可以使用进行常规复制FileManager.

我的问题是,我在这里遵循正确的程序吗?将从NSURL粘贴板获得的内容转换为URL类型并在其中使用它copyItem(at:URL, to:URL)不起作用(即使将相同的 url 复制并粘贴到 Safari 中使我能够查看文件)。因此我改用copyItem(atPath:String, toPath:String). 为了进一步研究这一点,是否有URL替换类型的方法NSURL(from:NSPasteboard)?好像应该有。

无论如何,这是我正在工作的代码(请忽略 draggingEntered: 中的代码:目前,它只是让测试工作正常,而且我注册NSFilenamesPboardType但随后忽略它的事实也可以被忽略)。

最后一点是,文档在注册拖动类型时一直提到使用 UTI,但我不清楚这会延伸多远。我应该用尿路感染代替NSURLPboardType和吗?NSFilenamesPboardType

0 投票
1 回答
128 浏览

cocoa - 如何实现从照片到我的 Cocoa 应用程序的高质量拖放?

在我的拖动目标视图(NSView子类)中,我实现了:

当我运行它并从 Photos.app 中拖动一些东西时,我收到了这个警告:

照片警告

如何修复我的拖动目的地没有此警告?我想在我的应用程序中获取全质量的照片。

0 投票
0 回答
41 浏览

objective-c - 如何更改拖动项目时显示的数字

NSCollectionView拖动多个项目时,会有一个带有数字的红色圆圈,表示拖动项目的数量。我需要操纵这个数字或至少隐藏它。谁能给我一个线索如何做到这一点?这是一个拖入查找器的示例,但我要的是我自己的应用程序: 在此处输入图像描述

0 投票
1 回答
29 浏览

nstableview - 使用 NSPasteboard 重新排序和移动 NSTableView 行

我有一个NSTableView可以拖放表格行来重新排序的地方。这可以通过在我的视图控制器中设置拖动类型来实现:

...然后使用这些表委托方法实现重新排序:

现在,除了重新排序我的表格行之外,我还希望能够将一行拖放到我的应用程序中的其他位置——有点像将行移动到不同的地方。

我有一个自定义NSView设置作为拖动目标,我可以拖动一个表格行,并且自定义视图会适当地对拖过它的表格行做出反应:

但我不清楚的部分是如何获取表行,以及在NSTableCellView发生丢弃时将其关联对象设置为 上的属性:

我可以获取行的索引,但我需要的是行数据源中的整个对象,因此我可以对它所代表的对象采取行动。我怀疑我需要更改pasteboardWriterForRow将对象放在粘贴板上的方式,但我不确定该怎么做。

如何将行索引对象都传递给粘贴板?