当 SecureField 在 SwiftUI 中聚焦/不聚焦时执行代码

And*_*ltz 10 textfield swift swiftui

我在 SwiftUI 中有一个 SecureField。当这个 Field 获得焦点时(当用户点击它时)我想操纵一个 @State 属性来为 SecureField 应用偏移修饰符。当 SecureField 失去焦点时,@State 属性应该再次重置。如果键盘被切换,我想这样做是为了让 SecureField 可见。

我通过使用 TextField 的 onEditingChanged 参数实现了这一点,但 SecureField 不存在此参数。

如何使用 SwiftUI 中的 SecureField 执行此操作?

如果 TextField 被聚焦,这将应用偏移量:

import SwiftUI

let lightGreyColor = Color(red: 239.0/255.0, green: 243.0/255.0, blue: 244.0/255.0, opacity: 1.0)

struct ContentView : View {
    @State private var textFieldString: String = ""

    @State private var editingMode: Bool = false

    var body: some View {
        VStack {
            SecureField($textFieldString, placeholder: Text("My placeholder"))
            }
            .padding()
            .background(lightGreyColor)
            .cornerRadius(10.0)
            .padding()
            .offset(y: editingMode ? -150 : 0)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如何在没有 onEditingChanged 参数的 SwiftUI 中使用 SecureField 实现相同的目标?

struct ContentView : View {
    @State private var textFieldString: String = ""

    @State private var editingMode: Bool = false

    var body: some View {
        VStack {
            SecureField($textFieldString, placeholder: Text("My placeholder"))
            }
            .padding()
            .background(lightGreyColor)
            .cornerRadius(10.0)
            .padding()
            .offset(y: editingMode ? -150 : 0)
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 0

您可以像以前一样继续使用 UITextField,并切换其secureTextEntry字段,而不是使用 SecureField 组件。