Add tap on search to focus search field on iOS

This commit is contained in:
Arkadiusz Fal
2023-05-26 23:18:55 +02:00
parent 562df2d9ba
commit 48263ae7db
6 changed files with 96 additions and 4 deletions

View File

@@ -0,0 +1,29 @@
import Introspect
import Repeat
import SwiftUI
@available(iOS 15.0, macOS 12, *)
struct FocusableSearchTextField: View {
@ObservedObject private var state = SearchModel.shared
#if os(iOS)
@State private var textField: UITextField?
#elseif os(macOS)
@State private var textField: NSTextField?
#endif
var body: some View {
SearchTextField()
#if os(iOS)
.introspectTextField { field in
textField = field
}
.onChange(of: state.focused) { newValue in
if newValue, let textField, !textField.isFirstResponder {
textField.becomeFirstResponder()
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
}
}
#endif
}
}

View File

@@ -95,7 +95,11 @@ struct SearchView: View {
filtersMenu
}
SearchTextField()
if #available(macOS 12, *) {
FocusableSearchTextField()
} else {
SearchTextField()
}
}
#endif
}
@@ -175,7 +179,11 @@ struct SearchView: View {
searchMenu
}
ToolbarItem(placement: .principal) {
SearchTextField()
if #available(iOS 15, *) {
FocusableSearchTextField()
} else {
SearchTextField()
}
}
}
.navigationBarTitleDisplayMode(.inline)