如何知道 SwiftUI 中的 SecureTextField 何时获得焦点或失去焦点?

我想知道,我们如何检测 SecureTextField 是失去焦点还是获得焦点。

目前我正在使用点击手势来检查是否获得焦点并相应地更改边框颜色,但有时颜色会更改但无法开始编辑。

SecureField("Password",text: $viewModel.password) {
                        passwordEditingState = .ended
                        focusedTextField = nil
                    }
                    .onTapGesture {
                        focusedTextField = TextFields.password.rawValue
                    }
                    .padding(20)
                    .background(Color.systemDefaultSecondary)
                    .cornerRadius(16.0)
                    .disableAutocorrection(true)
                    .autocapitalization(.none)
                    .overlay(RoundedRectangle(cornerRadius: 16).stroke(isSelected ? Color.green : Color.gray,lineWidth: 1))

需要考虑的一件事是我的应用程序的最低目标是 14.1,因此我需要一个基于此的解决方案。 感谢您的帮助!

rree2009 回答:如何知道 SwiftUI 中的 SecureTextField 何时获得焦点或失去焦点?

您可以将 focused 修饰符与 FocusState 一起使用,如下所示。

使用 Xcode 13 / iOS 15 准备和测试的演示。

注意:您需要模拟器或真实设备 - 它在预览版中不起作用

demo

struct ContentView: View {
    @FocusState var isInFocus: Bool
    @State private var text: String = "password"

    var body: some View {
        VStack {
            if isInFocus {
                Text("Field is in focus!")
            }
            SecureField("Password",text: $text)
                .focused($isInFocus)
        }
    }
}
本文链接:https://www.f2er.com/2851.html

大家都在问