TextField 在 .sheet() 中断 ios17 中的 TabBar 演示文稿 detents

TextField In a TabBar in a .sheet() break presentation detents in ios17

提问人:jalone 提问时间:11/16/2023 更新时间:11/16/2023 访问量:39

问:

我想在 with 或自定义大小内显示类似 UIPageView 的内容。它似乎适用于 ios16,但不适用于 ios17。sheet.mediumpresentationDetent

为此,我在工作表中嵌入了一个样式。TabViewPageTabViewStyle

它可以正常工作(除了忽略 safeArea 的问题),但似乎如果我在其中嵌入一个 TextField,与哪个嵌套级别无关,它会破坏制动器。工作表将显示全屏(而不是中屏),并且可能会发生奇怪的布局行为。

以下是一些用于重现它的最小代码:

import SwiftUI

struct ContentView: View {
    
    @State var text = "text"
    @State var showSheet = false
    
    var body: some View {
        VStack {
            Button("SHOW SHEET") {
                showSheet = true
            }
        }
        .sheet(isPresented: $showSheet) {
            TabView {
                TextField("Venue name", text: $text, axis: .vertical)
                TextField("Venue name", text: $text, axis: .vertical)
            }
            .tabViewStyle(PageTabViewStyle())
            .presentationDetents([.medium])
        }
    }
}

将文本字段替换为或任何其他视图可以正常工作。Color.green

测试

使用 xcode 15.0 构建

  • 问题可在 ios17 模拟器和真实设备上重现
  • 在 ios16 模拟器和真实设备上正常工作。
iOS swiftUI iOS17

评论

0赞 Teja Nandamuri 11/16/2023
删除 Made it Present 半张样式tabViewStyle
0赞 jalone 11/16/2023
是的,确实@TejaNandamuri但可悲的是我需要它。我认为这是工作表、标签和键盘之间的冲突,因为我也可以复制。TextEditor

答: 暂无答案