不会从foreach循环中调用SwiftUI .onTapGesture

时间:2020-07-26 01:53:55

标签: swift loops swiftui

这是我正在使用的代码:

var array = ["Q","W","E","R","T","Y"]
HStack(){
    ForEach(0..<topRow.count, id: \.self){i in
        MyView(letter: self.array[i])
            .onTapGesture {
                print("Test")
            }
    }
}

所有“ MyView”都正确显示,但是当我点击其中的任何一个时,都不会打印任何内容。而且MyView只是一个text()。

1 个答案:

答案 0 :(得分:0)

我找到了问题和解决方案。正如New Dev指出的那样,该错误是由所示代码中未包含的某些内容所调用的。我会在这里张贴出什么毛病,以防有人偶然发现。

未包含的是MyView的代码,我将在此处输入:

struct MyView: View {

    var letter:String
    @State var pressed = false
    
    var body: some View {
        ZStack{
            if pressed{
                Text(letter)
                .font(Font.custom("ComicNeue-Bold", size: 30))
                .foregroundColor(.white)
                .opacity(0.23)
            } else if !pressed{
                Text(letter)
                .font(Font.custom("ComicNeue-Bold", size: 30))
                .foregroundColor(.white) 
            }
            
        }.padding(5)
        .onTapGesture {
            self.pressed = true
        }
    }
}

我通过从ZStack中删除.onTapGesture解决了该问题。因此,我猜测问题是视图不能具有两个.onTapGesture修饰符。