如何解决当一个元素在另一个元素后面时,SwiftUI按钮会单击
我在ScrollView中有一个文本和一些框。它们都是可点击的Button
。
问题:
- 当我单击左图中的“按钮”时,出现控制台日志“文本单击”。 (一切都很好)
- 但是,如果我向下滚动一点并单击第二个图像上的“按钮”,它实际上单击了后面的框,并且得到控制台日志“框单击”。
由于某种原因,我最终单击了后面的视图,而不是前面的视图。这是一个错误还是我做错了什么?
这是再现错误的代码。我正在使用Xcode 12。
struct ContentView: View {
var body: some View {
VStack {
Text("Hello,world!").font(.largeTitle)
.padding(.bottom,150)
HStack{
Button(action: { print("text click") }) {
Text("TEXT")
}
}
ScrollView {
VStack {
HStack {
Button( action: {print("box click")}) {
Rectangle()
.frame(width: 150,height: 150)
}
Button( action: {print("box click")}) {
Rectangle()
.frame(width: 150,height: 150)
}
}
HStack {
Button( action: {print("box click")}) {
Rectangle()
.frame(width: 150,height: 150)
}
}
HStack {
Button( action: {print("box click")}) {
Rectangle()
.frame(width: 150,height: 150)
}
}
}
}
}
}
}
解决方法
将剪辑添加到ScrollView中,例如
ScrollView {
// ... other content here
}
.contentShape(Rectangle())
.clipped()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。