我想在类似于Apple地图的地图上介绍搜索表。但是,使用Swiftui的默认表(ISPRESENTED:ONDIMSISS:content :)背景缩放,这导致了意外跳跃...

问题描述 投票:0回答:1
贴图:

我的应用程序:

Apple Maps search bar

提出的解决方案

这个问题使手动拖动视图时可以防止缩放: Custom search bar in front of a map, scaled

仅当我通过搜索文本的text显示表(在模拟器上或设备上运行)时,缩放行为才存在,因为XCode Previews可能不会显示键盘):

@FocusedState Custom search bar in front of a map, unscaled我假设它与键盘有关,因为我无法设置import SwiftUI import MapKit struct ContentView: View { @State private var showSheet = true var body: some View { Map() .sheet(isPresented: $showSheet) { MinimalSearchSheet() } } } struct MinimalSearchSheet: View { @State private var searchQuery = "" @State private var selectedDetent: PresentationDetent = .fraction(0.1) @FocusState private var isSearchFocused: Bool var body: some View { VStack { HStack { Image(systemName: "magnifyingglass") TextField("Search", text: $searchQuery) .padding(12) .background(Color.gray.opacity(0.1)) .cornerRadius(8) .focused($isSearchFocused) } .padding() Spacer() } .presentationDetents([.fraction(0.1), .fraction(0.333), .fraction(0.999)], selection: $selectedDetent) .interactiveDismissDisabled() .onChange(of: isSearchFocused) {_, focused in if focused { selectedDetent = .fraction(0.999) } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }

,纸总是返回为

if focused { selectedDetent = .medium }

。添加
.large

没有结果。
	

您可能需要允许向键盘显示键盘的空间。在iPhone 16模拟器上,值为0.5工作:

.ignoresSafeArea(.keyboard)

    

swift swiftui
1个回答
0
投票
© www.soinside.com 2019 - 2025. All rights reserved.