当我按Return键或在Textfield之外单击时,如何删除Textfield焦点?(SwiftUI、MacOS) [英] How can I remove Textfield focus when I press return or click outside Textfield? (SwiftUI, MacOS)

查看:0
本文介绍了当我按Return键或在Textfield之外单击时,如何删除Textfield焦点?(SwiftUI、MacOS)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我按Return键或在Textfield之外单击时,如何删除Textfield焦点? 请注意,这是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 }
        )
      )
    }
  }
}
然后单击文本字段并对其进行编辑,然后单击按钮TextFieldNot Lost Focus(文本字段未失去焦点)。如何使其退出编辑模式并失去焦点。

如果我按回车键,我还希望从文本字段中失去焦点。 我将绑定初始化器与GET和SET一起使用,因为我认为我可以以某种方式截取按键并检测‘Return’字符,但这不起作用。

任何感谢的帮助:-)

推荐答案

以下是可能的变体

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)
            }
      }
      )
    }
  }
}

这篇关于当我按Return键或在Textfield之外单击时,如何删除Textfield焦点?(SwiftUI、MacOS)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆