我不明白为什么在VStack/HStack/ZStack上无法使用DragGesture。请考虑以下简单示例:
我希望整个视图可以根据拖动手势改变的
struct ContentView: View {
@State private var offset = CGSize.zero
var body: some View {
VStack {
Text("Hello World!")
}
.frame(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
.edgesIgnoringSafeArea(.all)
.offset(y: offset.height)
.gesture(DragGesture()
.onChanged { val in
self.offset = val.translation
}
.onEnded { val in
self.offset = .zero
}
)
}
}
我希望整个视图可以根据拖动手势改变的
offset
变量上下移动。但是,即使我在VStack
上写上.gesture
修饰符,并且VStack
占满了全屏(感谢.frame
修饰符),拖动手势也无法在VStack
上工作。只有当我拖动“Hello world”文本时,手势才起作用,但如果我在Text
之外拖动(但仍然在全屏的VStack
内),则不响应。有什么建议吗?谢谢。
.contentShape
之前调用.frame
,否则它将无法正常工作。 - robinst