我想知道,我们如何检测 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,因此我需要一个基于此的解决方案。 感谢您的帮助!
答案 0 :(得分:3)
您可以将 focused
修饰符与 FocusState
一起使用,如下所示。
使用 Xcode 13 / iOS 15 准备和测试的演示。
注意:您需要模拟器或真实设备 - 它在预览版中不起作用
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)
}
}
}