我正在使用 msvc 调试 VSCode 中的项目。当我运行调试器时,VSCode 要求我选择一个环境,我选择“C++ (Windows)”选项:
然后它要求我选择一个配置:
我选择“cl.exe 构建和调试活动文件”。一切运行正常,并在我下次尝试构建项目时创建带有“tasks.json”文件的“.vscode”文件夹。它不会创建“launch.json”,因此每次我想运行调试器时,我都必须再次选择配置。在之前的项目中,“launch.json”是使用正确的配置创建的:
为什么 vscode 不创建“launch.json”文件?我错过了什么吗?
据我所知,在 SwiftUI 中从 TextField 中关闭键盘的唯一内置方法是按 Return 键。我想这样做,这样我就可以点击屏幕上除 TextView 之外的某个位置并关闭键盘。有一种方法可以这样做:
var body: some View {
VStack(alignment: .center, spacing: 0) {
Text("some text")
.frame(maxWidth: .infinity)
.contentShape(Rectangle())
.onTapGesture(
// dismiss keyboard here
)
TextField("text", $binding)
Text("more text")
.frame(maxWidth: .infinity)
.contentShape(Rectangle())
.onTapGesture(
// dismiss keyboard here
)
}
}
Run Code Online (Sandbox Code Playgroud)
那就有点麻烦了。我想这样做:
var body: some View {
VStack(alignment: .center, spacing: 0) {
Text("some text")
TextField("text", $binding)
Text("more text")
}
.frame(maxWidth: .infinity)
.contentShape(Rectangle())
.onTapGesture(
// dismiss keyboard here
)
}
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都有效,但最外层视图上的手势会覆盖文本字段的手势。当您第一次按下文本字段时,键盘会显示,但是当您再次按下它时,它会消失,这是我不想要的。我希望子视图手势优先。如果 VStack 中有一个按钮,它应该只注册该按钮,而不注册关闭手势。我正在研究 GestureMask 和 ExclusiveGesture 但找不到方法。有没有人知道的方法?