Вот очень упрощенная версия моего макета. У меня есть текстовое представление, которое я могу перетаскивать ...
struct DragView: View {
var text:String
@State var dragAmt = CGSize.zero
var body: some View {
Text(text)
.padding(15)
.background(Color.orange)
.cornerRadius(20)
.padding(5)
.frame(width: 150, height: 60, alignment: .leading)
.offset(dragAmt)
.gesture(
DragGesture(coordinateSpace: .global)
.onChanged {
self.dragAmt = CGSize(width: $0.translation.width, height: $0.translation.height)
}
.onEnded {_ in
self.dragAmt = CGSize.zero
})
}
}
И затем я упорядочиваю эти виды следующим образом:
struct ContentView: View {
var body: some View {
HStack {
ScrollView {
VStack {
DragView(text: "hi")
DragView(text: "hi")
DragView(text: "hi")
}
}
Divider()
VStack {
DragView(text: "hi")
DragView(text: "hi")
DragView(text: "hi")
}
}
}
}
Виды, которых нет ScrollView работает, как и ожидалось, и я могу перетаскивать их по всему экрану. Виды, которые есть в ScrollView, однако, исчезнут, если вывести их за пределы ScrollView.
Почему это происходит? Есть ли способ, позволяющий перетаскивать эти виды за пределы ScrollView?