问题标签 [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.
objective-c - draggingEntered 不触发
我有一个 NBox 的子类,我想在一个名为 dragBox 的画布上拖动它。我不明白为什么以下代码没有触发 draggingEntered 。我得到了一张漂亮的后退图像,但没有一个目的地代表被解雇。为什么?
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
吗?
非常感谢任何提示。
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
在将识别填充哪些行的核心数据,但我从这里开始)。
- 我正在尝试制作一个
NSStringPboardType
附加到四个NSTextFields
可拖动的原型。没有骰子。 - 我可以从粘贴板上
NSMatrix
接收字符串(或)。NSFilenamesPboardType
那里没问题。
一旦我收到适当的传入单元格(字符串),我就可以浏览它并确定是与当前列合并还是创建一个新列——同样,这不是问题。
我做过的事情...
1) 子类化 NSTextField...
2)注册文本字段的拖动类型并尝试拖动会话...
我的draggingSession:sourceOperationMaskForDraggingContext:
方法甚至从未被调用过。
我是这个NSPasteboard
东西的新手,所以任何帮助将不胜感激。
cocoa - 如何通过在 NSTableView 中拖动行来允许移动和复制?
我有一个NSTableView
我希望能够拖放行来移动它们,并在按住 Option 的同时拖放(根据Apple 的文档)来复制它们。
我的视图控制器中有以下代码,这也是dataSource
表格视图的代码。
- 如何使默认的拖动操作移动,并且仅在按住 Option 键时进行复制?目前,它默认为立即复制。
- 在
tableView:acceptDrop:row:dropOperation:
我如何判断该操作是复制操作还是删除操作?
xcode - 拖放后窗口失去焦点
我正在使用 swift 开发一个 xcode mac 应用程序。我将文件拖放到 NSTableView 中,它工作正常,除了从文件系统拖放操作后,窗口失去焦点。
拖拽操作完成后如何设置应用焦点?
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
nstableview - 使用 NSPasteboard 重新排序和移动 NSTableView 行
我有一个NSTableView
可以拖放表格行来重新排序的地方。这可以通过在我的视图控制器中设置拖动类型来实现:
...然后使用这些表委托方法实现重新排序:
现在,除了重新排序我的表格行之外,我还希望能够将一行拖放到我的应用程序中的其他位置——有点像将行移动到不同的地方。
我有一个自定义NSView
设置作为拖动目标,我可以拖动一个表格行,并且自定义视图会适当地对拖过它的表格行做出反应:
但我不清楚的部分是如何获取表行,以及在NSTableCellView
发生丢弃时将其关联对象设置为 上的属性:
我可以获取行的索引,但我需要的是行数据源中的整个对象,因此我可以对它所代表的对象采取行动。我怀疑我需要更改pasteboardWriterForRow
将对象放在粘贴板上的方式,但我不确定该怎么做。
如何将行索引和对象都传递给粘贴板?