点击列表项的空白处没有任何反应,为什么?

foo*_*ear 2 list swiftui

我只想在点击列表项的任意位置时执行某些操作。

当点击项目的 Text() 时一切正常,但是当我点击项目的空白区域时,什么也没有发生,为什么?

struct ItemView: View {
    var body: some View {
        HStack {
            Text("Hello")
            Spacer()
            Text("world")
        }
    }
}

struct ListView: View {
    var body: some View {
        List() {
            ForEach((1...10).reversed(), id: \.self) { index in
                ItemView().onTapGesture {
                    print("item \(index) taped")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

-=-=-=
我做了一些实验,它们太奇怪了!!!
如果点击 Text hello,则打印“hello”;
如果点击空白区域,则打印“world”;
如果点击文本世界,则打印点击的“item 0”;

struct ItemView: View {
    var body: some View {
        HStack {
            Text("Hello").onTapGesture {
                print("hello tapped")
            }
            Spacer()
            Button(action: {
                print("world tapped")
            }) {
                Text("world")
            }
        }
    }
}

struct ListView: View {
    var body: some View {
        List() {
            ForEach((1...10).reversed(), id: \.self) { index in
                ItemView().onTapGesture {
                    print("item \(index) taped")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mac*_*c3n 6

将背景修改器添加到具有不透明度的 ItemView

struct ContentView: View {
    var body: some View {
        List() {
            ForEach((1...10).reversed(), id: \.self) { index in
                ItemView()
                    .background(Color.gray.opacity(0.001))
                    .onTapGesture {
                    print("item \(index) taped")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)