小编Fra*_*k R的帖子

如何在 macOS/AppKit 中的窗口选项卡上接受拖动项目的放置?

鼠标光标将书签文件拖动到 Safari 窗口选项卡

\n

在 Safari 中,我可以将项目(例如 URL,甚至是取景器中的 .webloc 书签)直接拖到选项卡上以打开。

\n

如何使窗口选项卡栏项目在我自己的 AppKit 应用程序中查看放置目标?

\n

I\xe2\x80\x99d 希望能够接受删除NSPasteboard类似于NSView实例的方式:

\n
override func performDragOperation(_ sender: NSDraggingInfo) -> Bool {\n    // Handle drop\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但选项卡栏和包含的NSTabButton实例是由系统提供的。\n子类化或扩展NSTabButton\xe2\x80\x99 似乎不起作用,因为\xe2\x80\x99 是私有的。

\n

macos drag-and-drop appkit swift

16
推荐指数
1
解决办法
407
查看次数

SwiftUI:添加 .onDrag 阻止单击/选择 macOS 侧栏中的项目

我的 macOS app\xe2\x80\x99s 侧边栏中有一个列表。当我添加.onDrag修改器时,拖动NSItemProvider可以正常工作,但单击/选择项目会触发被阻止NavigationLink

\n
struct ContentView: View {\n    var body: some View {\n        NavigationView {\n            List(Data.items) { item in\n                NavigationLink(\n                    destination: Text(item.text),\n                    label: {\n                        Text(item.text)\n                          .lineLimit(5)\n                           // Enabling dragging with .onDrag {} disables click and selection:\n                          .onDrag { return NSItemProvider(object: item.url as NSURL) }\n                    })\n            }\n            Text("Placeholder")\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

如何添加拖动行为,同时保持正常的列表选择行为不变?

\n

这是最小可重现示例的其余部分:

\n
import SwiftUI\n\n@main\nstruct ListDragExampleApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n    }\n}\n\nstruct Data {\n    struct Item: …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-list swiftui-navigationlink

14
推荐指数
1
解决办法
938
查看次数