I've discovered an issue with using iOS 16's Transferable
drag-and-drop APIs for SwiftUI. The dropDestination
modifier does not work when applied to a subview of a List
.
This code below will not work, unless you replace the List
with a VStack
or any other container (which, of course, removes all list-specific rendering).
The draggable
modifier will still work and the item will drag, but the dropDestination
view won't react to it and neither closure will be called.
struct MyView: View {
var body: some View {
List {
Section {
Text("drag this title")
.font(.largeTitle)
.draggable("a title")
}
Section {
Color.pink
.frame(width: 400, height: 400)
.dropDestination(for: String.self) { receivedTitles, location in
true
} isTargeted: {
print($0)
}
}
}
}
}
Has anyone encountered this bug and perhaps found a workaround?