focus - 当我按回车键或单击文本字段外部时,如何删除文本字段焦点?(SwiftUI,MacOS)
问题描述
当我按回车键或单击文本字段外部时,如何删除文本字段焦点?请注意,这是MacOS上的 SwiftUI 。
如果我这样做:
import SwiftUI
struct ContentView: View {
@State var field1: String = "This is the Text Field View"
var body: some View {
VStack{
Button("Press") {
print("Button Pressed")
}
TextField("Fill in Text", text: Binding(
get: { print("get") ; return self.field1 },
set: { print("set") ; self.field1 = $0 }
)
)
}
}
}
然后单击 TextField 并对其进行编辑,然后单击按钮 TextField 不会失去焦点。我怎样才能让它退出编辑模式并失去焦点。
如果我按回车键,我也想失去对 TextField 的关注。我将绑定初始化程序与 get 和 set 一起使用,因为我认为我可以以某种方式拦截按键并检测“返回”字符,但这不起作用。
任何帮助表示赞赏:-)
解决方案
以下是可能的变体
import SwiftUI
import AppKit
struct ContentView: View {
@State var field1: String = "This is the Text Field View"
var body: some View {
VStack{
Button("Press") {
print("Button Pressed")
NSApp.keyWindow?.makeFirstResponder(nil)
}
TextField("Fill in Text", text: Binding(
get: { print("get") ; return self.field1 },
set: { print("set") ; self.field1 = $0 }
), onCommit: {
DispatchQueue.main.async {
NSApp.keyWindow?.makeFirstResponder(nil)
}
}
)
}
}
}
推荐阅读
- android - 在 BottomSheetDialogFragment 中使用 VideoView 时,视频总是在顶部加载
- json - JQ Group 多个文件
- datastage - 作业完成后将作业信息插入统计表 DataStage
- apache - apache仅将重写规则应用于一个子目录
- typescript - nestjs pg 测试连接从 ConfigService 窗口映射 prod db
- asp.net-core - 重定向以登录 Blazor Server Azure B2C 身份验证
- .net-core - 全新安装后,在 Ubuntu 20.04 上缺少版本为 2.2.8 的 Microsoft.AspNetCore.App
- apollo-server - 使用 Key 启动网关以验证配置,然后使用 Bearer 令牌进行查询
- c++ - 首先调用复制构造函数,而不是仅在传递 R 值引用时移动构造函数
- python - 排序列表的实现类