fixed search

This commit is contained in:
Mauro Romito
2025-09-15 10:33:11 +02:00
committed by Stefan Ceriu
parent 78c3ea9696
commit 699a42be95
4 changed files with 47 additions and 22 deletions
+42 -17
View File
@@ -7,7 +7,7 @@
import GameController
import SwiftUI
import SwiftUIIntrospect
@_spi(Advanced) import SwiftUIIntrospect
// MARK: - Search Controller Extensions
@@ -52,24 +52,49 @@ private struct SearchControllerModifier: ViewModifier {
/// is `false`, checking if this value is `false` is pretty much meaningless.
@State private var isSearching = false
@ViewBuilder
func body(content: Content) -> some View {
content
.interactiveDismissDisabled(!searchQuery.isEmpty && disablesInteractiveDismiss)
.background {
SearchController(searchQuery: $searchQuery,
placeholder: placeholder,
hidesNavigationBar: hidesNavigationBar,
showsCancelButton: showsCancelButton,
hidesSearchBarWhenScrolling: false,
accessibilityFocusOnStart: accessibilityFocusOnStart,
isSearching: $isSearching)
}
.onDisappear {
// Dismiss search when the view disappears to tidy up appearance when popping back to the view.
if isSearching {
isSearching = false
let text: Text? = if let placeholder {
Text(placeholder)
} else {
nil
}
if #available(iOS 26, *) {
content
.searchable(text: $searchQuery, placement: .navigationBarDrawer(displayMode: .always), prompt: text)
.interactiveDismissDisabled(!searchQuery.isEmpty && disablesInteractiveDismiss)
.introspect(.navigationStack, on: .supportedVersions, scope: .ancestor) { navigationController in
// Uses the navigation stack as .searchField is unreliable when pushing the second search bar, during the create rooms flow.
guard let searchController = navigationController.navigationBar.topItem?.searchController else { return }
searchController.automaticallyShowsCancelButton = showsCancelButton
searchController.hidesNavigationBarDuringPresentation = hidesNavigationBar
}
}
.onDisappear {
// Dismiss search when the view disappears to tidy up appearance when popping back to the view.
if isSearching {
isSearching = false
}
}
} else {
content
.interactiveDismissDisabled(!searchQuery.isEmpty && disablesInteractiveDismiss)
.background {
SearchController(searchQuery: $searchQuery,
placeholder: placeholder,
hidesNavigationBar: hidesNavigationBar,
showsCancelButton: showsCancelButton,
hidesSearchBarWhenScrolling: false,
accessibilityFocusOnStart: accessibilityFocusOnStart,
isSearching: $isSearching)
}
.onDisappear {
// Dismiss search when the view disappears to tidy up appearance when popping back to the view.
if isSearching {
isSearching = false
}
}
}
}
}