SwiftUI - 如何防止工作表中的键盘向上推我的主 UI

Posted

技术标签:

【中文标题】SwiftUI - 如何防止工作表中的键盘向上推我的主 UI【英文标题】:SwiftUI - How to prevent keyboard in a sheet to push up my main UI 【发布时间】:2021-12-26 03:04:01 【问题描述】:

我在引导过程中使用工作表 (SwiftUI) 让人们输入文本,但是每当关闭工作表时,背景中的元素就会移动,就好像键盘在上下推动它们一样。如果键盘不在屏幕上,则在关闭工作表时背景中的元素不会移动。我尝试使用 .ignoresSafeArea(.keyboard, edges: .bottom) 但它似乎不起作用。

关于如何在关闭带有键盘的工作表时“修复”背景元素的任何想法?

  private var welcomeSection5: some View 
    ZStack 
        VStack 
            
            // This is the part that moves up and down
            TellSlideView(text: "And what's your age \(userName) if I may?")
            Spacer()
            Button(action: 
                displaySheet.toggle()

            , label: 
                Text("Enter age")
                    .padding()
                    .foregroundColor(Color.white)
                    .frame(maxWidth: .infinity)
                    .background(Color.MyTheme.Purple)
                    .cornerRadius(15)
                    .padding(.horizontal)
                    .padding(.bottom, 40)
            )
        .sheet(isPresented: $displaySheet) 
            AddUserAgeView(onboardingState: $onboardingState)
        .ignoresSafeArea(.keyboard, edges: .bottom)
    

【问题讨论】:

欢迎来到 Stack Overflow!请拨打tour 并查看:How do I ask a good question? 和How to create a Minimal, Reproducible Example。没有 MRE,我们无法调试这个,但是this question 对这些问题进行了很好的讨论。 【参考方案1】:

我曾经遇到过类似的问题。我无法重现您的代码,但您可以尝试像这样使用 GeometryRadar:

    GeometryReader  geometry in
        ZStack 
            VStack 
                
                // This is the part that moves up and down
            
        
    
    .ignoresSafeArea(.keyboard, edges: .bottom)



        

【讨论】:

以上是关于SwiftUI - 如何防止工作表中的键盘向上推我的主 UI的主要内容,如果未能解决你的问题,请参考以下文章

Swift 防止 TabBar 在键盘处于活动状态时向上移动

在 iPad 上,如何防止模态视图在键盘呈现时向上移动?

如何防止在android中打开键盘时反应本机模式向上移动?

如何在 Touch Down 实现时防止 SwiftUI 上的重新触发

Android:如何防止键盘在我的布局中向上推某个视图? [复制]

在 SwiftUI 中制作聊天应用程序:如何让 ScrollView 在键盘出现时保持原位?