From d3c500479775a386c6ba40811f4a45bf7d93eb4f Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Tue, 1 Jul 2025 00:46:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E5=8A=BF=E5=BC=80=E5=A7=8B=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dimensionhub/Views/Search/SearchView.swift | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/dimensionhub/Views/Search/SearchView.swift b/dimensionhub/Views/Search/SearchView.swift index a74ae83..210439a 100644 --- a/dimensionhub/Views/Search/SearchView.swift +++ b/dimensionhub/Views/Search/SearchView.swift @@ -54,6 +54,15 @@ struct SearchView: View { .opacity(showSearchResult && searchModel.dramaGroups.isEmpty ? 1 : 0) } } + .background( + GestureObserver { + // 当检测到系统返回手势时调用 + if isFocused { + isFocused = false + } + } + .frame(width: 0, height: 0) + ) .navigationTitle("") .toolbar { ToolbarItem(placement: .principal) { @@ -123,6 +132,42 @@ struct SearchDramaGroupView: View { } } +struct GestureObserver: UIViewControllerRepresentable { + var onGestureBegin: () -> Void + + func makeUIViewController(context: Context) -> UIViewController { + let controller = UIViewController() + DispatchQueue.main.async { + if let nav = controller.navigationController, + let gesture = nav.interactivePopGestureRecognizer { + gesture.addTarget(context.coordinator, action: #selector(Coordinator.handleGesture(_:))) + } + } + return controller + } + + func updateUIViewController(_ uiViewController: UIViewController, context: Context) { } + + func makeCoordinator() -> Coordinator { + Coordinator(onGestureBegin: onGestureBegin) + } + + class Coordinator: NSObject { + var onGestureBegin: () -> Void + + init(onGestureBegin: @escaping () -> Void) { + self.onGestureBegin = onGestureBegin + } + + @objc func handleGesture(_ gesture: UIScreenEdgePanGestureRecognizer) { + if gesture.state == .began { + onGestureBegin() + } + } + } +} + + // //#Preview { // SearchView()