键盘不覆盖 SwiftUI 中的视图

Posted

技术标签:

【中文标题】键盘不覆盖 SwiftUI 中的视图【英文标题】:Keyboard not overlaying the view in SwiftUI 【发布时间】:2021-06-24 15:56:36 【问题描述】:

所以我希望我的键盘覆盖视图,以便视图保持不变而不向上。我做了几个变体,比如将它添加到我的登录信息中,或者添加到它的导航视图中。它根本不起作用

这是我的代码

struct LoginView: View 
    @StateObject var userData = UserData()
    var body: some View 
        NavigationView 
            ZStack(alignment:.top) 
                Color.pink.ignoresSafeArea(edges: .top)
                VStack 
                    Image(systemName: "graduationcap.fill")
                        .resizable()
                        .scaledToFit()
                        .frame(width: /*@START_MENU_TOKEN@*/100/*@END_MENU_TOKEN@*/, height: /*@START_MENU_TOKEN@*/100/*@END_MENU_TOKEN@*/, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
                        .foregroundColor(.white)
                        .padding(.top,30)
                    Text("Study +")
                        .font(.title)
                        .fontWeight(.medium)
                        .foregroundColor(.white)
                    Spacer()
                    //Mark : The login Thinggy
                    LoginStuffs()
                
            
            .edgesIgnoringSafeArea(.bottom)
            .navigationTitle("Login")
            .navigationBarHidden(true)
        
    

登录资料

struct LoginStuffs: View 
    @State var username:String = ""
    @State var password:String = ""
    @State var isShow:Bool = false
    var body: some View 
       Vstack
Textfield()
Securefield()
Securefield()
        
        .padding()
        .frame(width:UIScreen.width,height:UIScreen.height/1.5)
        .background(Color.white)
        .cornerRadius(15, corners: [.topLeft, .topRight])
        //.ignoresSafeArea(edges: /*@START_MENU_TOKEN@*/.bottom/*@END_MENU_TOKEN@*/)
    


似乎我的代码中存在我不知道的问题(可能是由于没有正确学习)。请帮忙,谢谢您的关注

【问题讨论】:

我已经尝试将.ignoresSafeArea(.keyboard) 添加到视图中,但没有成功 添加LoginStuffs() 我做了,我尝试了变化,没有工作 我的意思是添加 LoginStuffs().. 的代码 :) 好的。给你 【参考方案1】:

在您的 NavigationView 上使用

.edgesIgnoringSafeArea(.bottom))

【讨论】:

如果 NavigationView 嵌套在另一个视图中添加到那个视图中,您必须将它添加到顶层视图中 我确实把它放在了顶层(我认为) 我没有,您正在使用其他视图中的 LoginView,如果不起作用,请尝试将其添加到 LoginView 将其添加到包含 LoginView 的视图中 类似这样的事情struct Controller: View var body: some View LoginView() .edgesIgnoringSafeArea(.bottom) 仍然无法正常工作

以上是关于键盘不覆盖 SwiftUI 中的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 macOS 上检测 SwiftUI 中的键盘事件?

关闭自定义模式/覆盖不更新 SwiftUI 中的视图内容

SwiftUI:输入字段键盘动画导致选项卡视图中的其他视图动画

键盘处理 swiftui

在 SwiftUI 中显示键盘上方的视图 [关闭]

如何防止键盘在 SwiftUI 中向上推视图? [复制]