diff --git a/LearnEnglish/LearnEnglish/Views/SpellingWordInput.swift b/LearnEnglish/LearnEnglish/Views/SpellingWordInput.swift index d969081..e257822 100644 --- a/LearnEnglish/LearnEnglish/Views/SpellingWordInput.swift +++ b/LearnEnglish/LearnEnglish/Views/SpellingWordInput.swift @@ -5,6 +5,7 @@ import UIKit struct KeystrokeCaptureField: UIViewRepresentable { let onChar: (Character) -> Void let onBackspace: () -> Void + @Binding var isActive: Bool func makeUIView(context: Context) -> UITextField { let tf = UITextField() @@ -19,7 +20,13 @@ struct KeystrokeCaptureField: UIViewRepresentable { Coordinator(onChar: onChar, onBackspace: onBackspace) } - func updateUIView(_ uiView: UITextField, context: Context) {} + func updateUIView(_ uiView: UITextField, context: Context) { + if isActive { + uiView.becomeFirstResponder() + } else { + uiView.resignFirstResponder() + } + } class Coordinator: NSObject, UITextFieldDelegate { let onChar: (Character) -> Void @@ -61,7 +68,7 @@ struct SpellingWordInput: View { let blankPositions: [Int] @Binding var currentBlankIndex: Int @Binding var filledBlanks: [String] - @FocusState private var isFocused + @State private var isFocused = false private let chars: [String] @@ -85,11 +92,10 @@ struct SpellingWordInput: View { guard currentBlankIndex > 0 else { return } currentBlankIndex -= 1 filledBlanks[currentBlankIndex] = "" - } + }, + isActive: $isFocused ) .frame(width: 0, height: 0) - .opacity(0.01) - .focused($isFocused) HStack(spacing: 4) { ForEach(Array(chars.enumerated()), id: \.offset) { index, ch in