ios - SwiftUI:VStack/HStack/ZStack 拖动手势不起作用
问题描述
我不明白为什么DragGesture
在 VStack/HStack/ZStack 上不起作用。考虑以下简单示例:
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
}
)
}
}
我希望整个视图根据 var 上下移动offset
(由拖动手势更改)。但是,即使我在.gesture
上写了修饰符VStack
,即使VStack
是全屏(感谢.frame
修饰符),拖动手势也不会在VStack
. 该手势仅在我拖动“Hello world”文本时才有效,但如果我拖动到外部Text
(但仍在全屏内部VStack
),它会无响应。有任何想法吗?谢谢。
解决方案
实际上,有一个 SwiftUI 功能旨在解决这个问题,而无需背景。
只需放置.contentShape(Rectangle())
在您的手势修饰符之前,它将响应整个封闭矩形。:)
推荐阅读
- android - Kotlin - Recyclerview 中的滚动检测问题
- android - 从 DialogFragment 导航到 Fragment 会从后台堆栈中删除 DialogFragment - Android 导航组件
- javascript - 如何从 JavaScript(HTML) 中的 JSON 对象获取没有键的值
- c# - 我怎样才能返回 ObsevableCollection
使用 C# Linq,如果没有选择所有项目,或者如果至少选择了一个,则只选择项目? - android - 如何在 Flutter 中创建 Stream Provider
- vue.js - 如何在 Vue 中加载 webassembly 文件?
- python - 为什么我得到名称“url_link”未定义错误?
- android - 如何在 viewpager2 的膨胀布局之一中添加 RecyclerView
- cortex-m - 在 ARM Cortex M4 中运行 Esper
- javascript - 如何使用javascript / react获取两个日期之间的完整日期?