watchOS上的SwiftUI表单:轻击手势间歇性失败

时间:2019-08-01 16:41:58

标签: swiftui watchos

在watchOS上,我试图制作一个非常简单的表单,其中包含一个Section和一个文本值列表,可以点击以执行一些操作。下面的代码。

struct ContentView: View {
    var body: some View {
        Form {
            Section(header: Text("Section 1")) {
                ForEach(0 ..< 3) { int in
                    Text("Hello \(int)")
                        .onTapGesture(count: 1) {
                            print("Tapped \(int)")
                        }
                }
            }
        }
    }
}

当我在模拟器中运行此命令时,每个单元格的水龙头只能根据需要间歇地打印。对于任何单元,有时轻按都会发出打印,有时什么也没有发生。 (更常见的是,什么也没有发生。只有偶尔会打印出照片。)

我做错什么了吗,或者这是Apple Watch模拟器中的错误?从macOS Catalina beta 5的Xcode 11 beta 5开始,在40mm和44mm模拟器中都出现。

1 个答案:

答案 0 :(得分:2)

要回答我自己的问题,我向Apple反馈了该文件并得到了答复:

  

请注意,我们的工程团队已根据所提供的信息确定此问题的行为符合预期。

     

带有onTapGesture()修饰符的文本将在文本本身被点击时触发关闭。在您的示例项目中,点击文本本身会触发该块,但是点击文本外部不会触发该块。如果要在点击“列表”行时执行操作,请在“列表”中放置一个“按钮”,并以“文本”作为按钮的内容。

他们还提供了以下示例代码片段:

List {
    Section(header: Text("Section 1")) {
        ForEach(0..<3) { value in
               Button(action: {
                    print("Tapped \(value)")
                }) {
                    Text("Hello \(value)")
                }
            }
         }
    }

没有关于Form构造的答案,但是List例子是合理的,即使乍看之下也不是很直观。