SwiftUI按钮点击关闭目标

m1m5dgzv  于 2023-02-11  发布在  Swift
关注(0)|答案(1)|浏览(120)

我有一些按钮的滚动视图,但由于某种原因,点击目标在实际按钮的下方。按钮的背景显示圆形按钮后面有一个正方形。为什么我不能选择内容所在的按钮?
代码:

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)
    }
}
dluptydi

dluptydi1#

我无法复制您的问题,当点击任何两个按钮(在他们内部)两个按钮显示,因为他们正在被点击在同一时间。
我有XCode的14.1版本和iOS的16.1版本,也许不同的版本可能会导致这个问题?
但是首先你应该改变按钮的id。你对两个按钮使用了相同的id,这在ForEach中是不推荐的,可能会导致问题。

相关问题