我的应用程序:
提出的解决方案
仅当我通过搜索文本的text显示表(在模拟器上或设备上运行)时,缩放行为才存在,因为XCode Previews可能不会显示键盘):
@FocusedState
我假设它与键盘有关,因为我无法设置
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)