Anonymous
KeyBoard закрывается, когда TextField изменяется на secureField и наоборот. Использование FocusState
Сообщение
Anonymous » 04 июл 2024, 13:03
Я пытаюсь превратить текстовое поле в SecureField, но в процессе, когда я нажал кнопку с глазом. keyBoard увольняется, чего я не хочу. Вот код, который я написал
Код: Выделить всё
import SwiftUI
enum TextFieldTypes {
case name
case password
}
struct SecureFieldTest: View {
@State var name: String = ""
@State var password: String = ""
@State var isEyeSlashed: Bool = false
@FocusState var focusState: TextFieldTypes?
var body: some View {
VStack {
MyTextField(placeHolder: "name",
text: $name,
focusState: $focusState,
currentFocuState: .name,
nextFocusState: .password)
MyTextField(placeHolder: "password",
text: $password,
focusState: $focusState,
currentFocuState: .password,
nextFocusState: .name)
}
.textFieldStyle(.roundedBorder)
}
}
struct MyTextField: View {
var placeHolder: String
@Binding var text: String
@FocusState.Binding var focusState: TextFieldTypes?
@State var currentFocuState: TextFieldTypes
@State var nextFocusState: TextFieldTypes
@State var isEyeSlashed: Bool = false
var body: some View {
HStack {
if isEyeSlashed {
SecureField(placeHolder, text: $text)
} else {
TextField(placeHolder, text: $text)
}
Image(systemName: isEyeSlashed ? "eye.slash": "eye")
.onTapGesture {
isEyeSlashed.toggle()
}
}
.focused($focusState, equals: currentFocuState)
.onSubmit {
focusState = nextFocusState
}
}
}
#Preview {
SecureFieldTest()
}
Я думаю, что мне нужно реализовать свой собственный SecureField вместо SwiftUi. Есть ли другие решения?
Подробнее здесь:
https://stackoverflow.com/questions/787 ... ce-versa-u
1720087391
Anonymous
Я пытаюсь превратить текстовое поле в SecureField, но в процессе, когда я нажал кнопку с глазом. keyBoard увольняется, чего я не хочу. Вот код, который я написал [code]import SwiftUI enum TextFieldTypes { case name case password } struct SecureFieldTest: View { @State var name: String = "" @State var password: String = "" @State var isEyeSlashed: Bool = false @FocusState var focusState: TextFieldTypes? var body: some View { VStack { MyTextField(placeHolder: "name", text: $name, focusState: $focusState, currentFocuState: .name, nextFocusState: .password) MyTextField(placeHolder: "password", text: $password, focusState: $focusState, currentFocuState: .password, nextFocusState: .name) } .textFieldStyle(.roundedBorder) } } struct MyTextField: View { var placeHolder: String @Binding var text: String @FocusState.Binding var focusState: TextFieldTypes? @State var currentFocuState: TextFieldTypes @State var nextFocusState: TextFieldTypes @State var isEyeSlashed: Bool = false var body: some View { HStack { if isEyeSlashed { SecureField(placeHolder, text: $text) } else { TextField(placeHolder, text: $text) } Image(systemName: isEyeSlashed ? "eye.slash": "eye") .onTapGesture { isEyeSlashed.toggle() } } .focused($focusState, equals: currentFocuState) .onSubmit { focusState = nextFocusState } } } #Preview { SecureFieldTest() } [/code] Я думаю, что мне нужно реализовать свой собственный SecureField вместо SwiftUi. Есть ли другие решения? Подробнее здесь: [url]https://stackoverflow.com/questions/78706416/keyboard-is-dismissing-when-textfield-is-changed-to-securefield-and-vice-versa-u[/url]