SwiftUI ScrollView、GeometryReader 和 Button = 奇怪的行为
Posted
技术标签:
【中文标题】SwiftUI ScrollView、GeometryReader 和 Button = 奇怪的行为【英文标题】:SwiftUI ScrollView, GeometryReader and Button = Weird Behaviour 【发布时间】:2020-05-01 20:39:10 【问题描述】:在过去的 2 个小时里,我一直在尝试让按钮的 ScrollView 工作,更具体地说,使用 GeometryReader 来确定其大小的按钮的 ScrollView。此外,所有这些都放置在 NavigationView 中。
有一些奇怪的行为,比如按钮没有执行其操作,没有注册点击,当放置在 VStack 中的 HStack 中以获得类似网格的结构时,我只能点击具有预期效果的第一行按钮,另一个按钮都没有反应。如何正确构建所有这些视图?
【问题讨论】:
【参考方案1】:下面的代码对我有用:
var body : some View
NavigationView
VStack
GeometryReader geometry in
ScrollView
// This is just how i'm setting up my buttons
VStack
ForEach(0 ..< 2, id: \.self) row in
HStack
ForEach(0 ..< 2, id: \.self) column in
TestButton()
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationViewStyle(StackNavigationViewStyle())
.edgesIgnoringSafeArea(.all)
.navigationBarTitle("")
.navigationBarHidden(true)
请注意,ScrollView 必须嵌套在 GeometryReader 中,否则会出现奇怪的行为(在我的情况下,我只能点击具有预期效果的第一行按钮)。希望这对某人有帮助!
【讨论】:
您的代码与评论不符。你能修复代码或评论吗?您的 GeometryReader 没有嵌套在上述代码中的 ScrollView 中。 别担心,感谢更新。我也注意到按钮和滚动视图的类似奇怪行为。以上是关于SwiftUI ScrollView、GeometryReader 和 Button = 奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:为啥这个 ScrollView 的内容错位了?