当我按Return键或在Textfield外部单击时,如何删除Textfield焦点? (SwiftUI,MacOS)

问题描述 投票:1回答:1

当我按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 }
        )
      )
    }
  }
}

然后单击TextField并对其进行编辑,然后单击Button,TextField不会失去焦点。如何使其退出编辑模式并失去焦点。

如果我按Return键,我也想从TextField失去焦点。我将Binding初始化程序与get和set一起使用,因为我认为我可以以某种方式拦截按键并检测“ Return”字符,但这不起作用。

任何帮助,谢谢:-)

focus textfield swiftui keypress
1个回答
0
投票

这里是可能的变体

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)
            }
      }
      )
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.