diff --git a/Model/NavigationModel.swift b/Model/NavigationModel.swift index c107ef25..84fea216 100644 --- a/Model/NavigationModel.swift +++ b/Model/NavigationModel.swift @@ -318,7 +318,7 @@ final class NavigationModel: ObservableObject { func multipleTapHandler() { switch tabSelection { case .search: - search.focused = true + break default: print("not implemented") } diff --git a/Model/Search/SearchModel.swift b/Model/Search/SearchModel.swift index 8b2cef7d..e5d1b13b 100644 --- a/Model/Search/SearchModel.swift +++ b/Model/Search/SearchModel.swift @@ -16,13 +16,9 @@ final class SearchModel: ObservableObject { @Published var querySuggestions = [String]() private var suggestionsDebouncer = Debouncer(.milliseconds(200)) - @Published var focused = false - @Default(.showSearchSuggestions) private var showSearchSuggestions - #if os(iOS) - var textField: UITextField! - #elseif os(macOS) + #if os(macOS) var textField: NSTextField! #endif @@ -30,15 +26,9 @@ final class SearchModel: ObservableObject { private var resource: Resource! init() { - #if os(iOS) - addKeyboardDidHideNotificationObserver() - #endif } deinit { - #if os(iOS) - removeKeyboardDidHideNotificationObserver() - #endif } var isLoading: Bool { @@ -158,18 +148,4 @@ final class SearchModel: ObservableObject { } } } - - #if os(iOS) - private func addKeyboardDidHideNotificationObserver() { - NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardDidHide), name: UIResponder.keyboardDidHideNotification, object: nil) - } - - @objc func onKeyboardDidHide() { - focused = false - } - - private func removeKeyboardDidHideNotificationObserver() { - NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardDidHideNotification, object: nil) - } - #endif } diff --git a/Shared/Search/FocusableSearchTextField.swift b/Shared/Search/FocusableSearchTextField.swift index c2d2ab8f..c20bf611 100644 --- a/Shared/Search/FocusableSearchTextField.swift +++ b/Shared/Search/FocusableSearchTextField.swift @@ -3,27 +3,15 @@ import SwiftUI import SwiftUIIntrospect struct FocusableSearchTextField: View { - @ObservedObject private var state = SearchModel.shared - var body: some View { SearchTextField() #if os(macOS) .introspect(.textField, on: .macOS(.v12, .v13, .v14, .v15)) { textField in - state.textField = textField + SearchModel.shared.textField = textField } .onAppear { DispatchQueue.main.async { - state.textField?.becomeFirstResponder() - } - } - #elseif os(iOS) - .introspect(.textField, on: .iOS(.v15, .v16, .v17, .v18)) { textField in - state.textField = textField - } - .onChange(of: state.focused) { newValue in - if newValue, let textField = state.textField, !textField.isFirstResponder { - textField.becomeFirstResponder() - textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument) + SearchModel.shared.textField?.becomeFirstResponder() } } #endif diff --git a/Shared/Search/SearchTextField.swift b/Shared/Search/SearchTextField.swift index 70c20bcd..9d5c25ed 100644 --- a/Shared/Search/SearchTextField.swift +++ b/Shared/Search/SearchTextField.swift @@ -55,9 +55,9 @@ struct SearchTextField: View { TextField("Search...", text: $state.queryText) { state.changeQuery { query in query.query = state.queryText - navigation.hideKeyboard() } RecentsModel.shared.addQuery(state.queryText) + navigation.hideKeyboard() } .disableAutocorrection(true) .textFieldStyle(.plain) diff --git a/Shared/Search/SearchView.swift b/Shared/Search/SearchView.swift index c15214ba..3d974a27 100644 --- a/Shared/Search/SearchView.swift +++ b/Shared/Search/SearchView.swift @@ -49,10 +49,10 @@ struct SearchView: View { .opacity(state.queryText.isEmpty ? 0 : 1) } else { results + .backport + .scrollDismissesKeyboardInteractively() } } - .backport - .scrollDismissesKeyboardInteractively() } .environment(\.listingStyle, searchListingStyle) .toolbar {