Fra*_*k R 14 swiftui swiftui-list swiftui-navigationlink
我的 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: Identifiable {\n let id = UUID()\n let text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."\n let url = URL(string: "http://example.com")!\n }\n static let items = [\n Item(),\n Item(),\n Item()\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n
小智 6
我遇到了同样的问题,据我所知,这实际上是SwiftUI 中的一个错误。我也许可以为讨论提供更多细节:
\nNavigationLink. 我有一个List带有自定义项目视图的普通视图,它呈现出相同的不稳定行为;View,例如Text视图旁边的空白区域。当我点击这些区域(“背景”,见下图)时,我仍然可以选择该项目,但拖动机制不起作用;List项目的“背景”区域,它不会接受它。总的来说,在我看来,每当接受拖放的项目具有子视图\xe2\x80\x94时,这是一个简单Text或更复杂的布局,例如我在图片中显示的\xe2\x80\x94,拖动机制就会禁用每当鼠标光标击中这些子视图之一时,就会进行选择,同时只允许通过在其框架内开始或结束来进行拖放。
在下面的代码中,当单击“Short”项目右侧的区域时,选择机制将起作用,但只有在视图框架内开始拖动时才会触发拖动Text。
struct ExampleList: View {\n private let data = ["Short", "Average", "Loooooooooooong"]\n @State private var selected = Set<String>()\n\n var body: some View {\n List(data, id: \\.self, selection: $selected) { text in\n Text(text) // Clicking outside the frame selects it...\n // ...but clicking inside starts the drag mechanism.\n .onDrag { NSItemProvider(object: text as NSString) }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n希望这可以帮助。来自巴西的欢呼!
\n| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |