在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模拟器中都出现。
答案 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例子是合理的,即使乍看之下也不是很直观。