显示用于 EditText 的键盘后视图不滚动在键盘下编辑文本SwiftUI

问题描述

键盘显示编辑输入时,我在滚动视图中有 TextEditor,它向 ScrollView 的底部添加了正确的填充,但它不会在视图的可见部分滚动 TextEditor。 当我使用 TextField 而不是 TextEditor 时,填充和自动滚动工作正常,但我的应用程序中需要 TextEditor(Multiline TextField)。

ScrollView(.vertical,showsIndicators: true) {
            ScrollViewReader { proxy in
                vstack(spacing: 0) {
                    AddActivityButtonStack()
                
                    Text("Duration")
                        .frame(minWidth: 0,maxWidth: .infinity,minHeight: 45,idealHeight: 45,maxHeight: 45,alignment: .leading)
                        .padding(.leading)
                        .padding(.trailing)
                        .padding(.top,20)
                    
                    DurationPickerTextField(placeHolder: "",duration: $selectedTime)
                        .frame(height: 45,alignment: .center)
                        .padding(.leading)
                        .padding(.trailing)
                    
                    Text("Date")
                        .frame(minWidth: 0,alignment: .leading)
                        .padding(.top)
                        .padding(.leading)
                        .padding(.trailing)
                    
                    DatePickerTextField(placeHolder: "",date: $selectedDate)
                        .frame(height: 45,alignment: .center)
                        .padding(.leading)
                        .padding(.trailing)
                    
                    HStack {
                        Group {
                            Button(action: {
                                print("Hypo Event")
                            },label: {
                                Text("Hypo Event")
                            })
                            
                            Button(action: {
                                print("Hypo Event")
                            },label: {
                                Text("Hypo Event")
                            })
                            
                        }
                        .foregroundColor(Color.white)
                        .frame(minWidth: 0,minHeight: 0,maxHeight: .infinity,alignment: .center)
                        .background(Color.red)
                        .cornerRadius(20)
                    }
                    .frame(height: 40)
                    .padding(.leading)
                    .padding(.trailing)
                    .padding(.top)
                        
                    // Scrolling and padding works fine for textfiled
                    TextField(
                        "User name (email address)",text: $username
                    )
                    
                    // padding is correct but does not scroll automatically when the keyboard shows
                    TextEditor(text: $description)
              
                    
                }
                .padding(.top,20)
                .padding(.bottom,20)
            }
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)