我有一些按钮的滚动视图,但由于某种原因,点击目标在实际按钮的下方。按钮的背景显示圆形按钮后面有一个正方形。为什么我不能选择内容所在的按钮?
代码:
struct ContentView: View {
let buttons = ["🔮", "🔮"]
@State var selected: Bool = false
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(buttons, id: \.self) { item in
Button {
UIImpactFeedbackGenerator(style: .light).impactOccurred()
selected.toggle()
} label: {
Text(item)
.frame(width: 40, height: 40, alignment: .center)
.lineLimit(1)
.background(Color(UIColor.lightGray))
.overlay(
RoundedRectangle(cornerRadius: 20)
.stroke(.black, lineWidth: selected ? 1 : 0)
)
}
.frame(width: 40, height: 40, alignment: .center)
.cornerRadius(20)
.contentShape(Circle())
.background(.red)
}
}
.padding(.horizontal, 10)
}
.frame(maxHeight: 40)
}
}
1条答案
按热度按时间dluptydi1#
我无法复制您的问题,当点击任何两个按钮(在他们内部)两个按钮显示,因为他们正在被点击在同一时间。
我有XCode的14.1版本和iOS的16.1版本,也许不同的版本可能会导致这个问题?
但是首先你应该改变按钮的id。你对两个按钮使用了相同的id,这在ForEach中是不推荐的,可能会导致问题。