ios 垂直轴位于键盘下方的多行文本字段

pxiryf3j  于 2022-11-19  发布在  iOS
关注(0)|答案(1)|浏览(151)

我遇到了一些问题,文本字段不能随视图向上移动。
我正在使用一个带垂直轴的文本字段(iOS 16)来创建多行。当它没有嵌入到滚动视图中时,它可以正常工作,并保持在键盘上方。但一旦文本字段嵌入到滚动视图中,多行就只会在键盘下方,你必须手动滚动才能看到最后一行。
请看下面的代码。这应该可以正常工作。但是如果你删除了滚动视图,你会在键入时注意到这个问题。

struct ContentView: View {
    @State private var text = "Lorem ipsum dolor sit amet. Nam voluptatem necessitatibus aut quis odio rem error repudiandae id aliquam perferendis et quidem quaerat et enim harum! Cum nesciunt animi rem quia vero aut omnis eligendi in ducimus eaque sit mollitia fugit est animi nesciunt. Ut exercitationem nulla qui dolor nihil ad autem vero quo internos sapiente eum dicta nihil qui exercitationem cumque et consectetur dolore. Et fugiat officiis non harum voluptas et modi repellendus ut repellat dolorem 33 eveniet quidem qui galisum veritatis. Id consequatur tenetur et eaque voluptas in assumenda delectus et fuga praesentium rem provident delectus est necessitatibus sunt quo dignissimos dolorum. Et reiciendis error et rerum eligendi qui illum error? In soluta ipsum est molestiae pariatur hic voluptas animi qui cupiditate amet."
    
    var body: some View {
        
        ScrollView {
            VStack() {
                TextField("Enter something", text: $text, axis: .vertical)
                    .textFieldStyle(RoundedBorderTextFieldStyle())
            }
        }
    }
}

如果有任何GitHub回购,你知道这也将是伟大的。

dgiusagp

dgiusagp1#

这不是一个确定的答案。在模拟器中出现了一些错误的行为。在真实的的设备上试试这个(我这里没有)。

import SwiftUI

struct ContentView: View {
    
    @State private var text = "Lorem ipsum dolor sit amet. Nam voluptatem necessitatibus aut quis odio rem error repudiandae id aliquam perferendis et quidem quaerat et enim harum! Cum nesciunt animi rem quia vero aut omnis eligendi in ducimus eaque sit mollitia fugit est animi nesciunt. Ut exercitationem nulla qui dolor nihil ad autem vero quo internos sapiente eum dicta nihil qui exercitationem cumque et consectetur dolore. Et fugiat officiis non harum voluptas et modi repellendus ut repellat dolorem 33 eveniet quidem qui galisum veritatis. Id consequatur tenetur et eaque voluptas in assumenda delectus et fuga praesentium rem provident delectus est necessitatibus sunt quo dignissimos dolorum. Et reiciendis error et rerum eligendi qui illum error? In soluta ipsum est molestiae pariatur hic voluptas animi qui cupiditate amet."
    
    @Namespace var bottomText
    
    var body: some View {
        ScrollViewReader { proxy in
            ScrollView {
                Text("Title")
                    .font(.largeTitle)
                TextField("Enter something", text: $text, axis: .vertical)
                    .textFieldStyle(RoundedBorderTextFieldStyle())
                    .onChange(of: text) { newValue in
                        print("Fired.")
                        withAnimation {
                            proxy.scrollTo(bottomText, anchor: .center)
                        }
                    }
                Color.red.frame(height: 50).id(bottomText)
            }
            
        }
    }
}

相关问题