在 Safari 中,我可以将项目(例如 URL,甚至是取景器中的 .webloc 书签)直接拖到选项卡上以打开。
\n如何使窗口选项卡栏项目在我自己的 AppKit 应用程序中查看放置目标?
\nI\xe2\x80\x99d 希望能够接受删除NSPasteboard类似于NSView实例的方式:
override func performDragOperation(_ sender: NSDraggingInfo) -> Bool {\n // Handle drop\n}\nRun Code Online (Sandbox Code Playgroud)\n但选项卡栏和包含的NSTabButton实例是由系统提供的。\n子类化或扩展NSTabButton\xe2\x80\x99 似乎不起作用,因为\xe2\x80\x99 是私有的。
我的 macOS app\xe2\x80\x99s 侧边栏中有一个列表。当我添加.onDrag修改器时,拖动NSItemProvider可以正常工作,但单击/选择项目会触发被阻止NavigationLink。
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}\nRun Code Online (Sandbox Code Playgroud)\n如何添加拖动行为,同时保持正常的列表选择行为不变?
\n这是最小可重现示例的其余部分:
\nimport 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)