出现键盘时滚动到 SwiftUI Scrollview 的最底部

Posted

技术标签:

【中文标题】出现键盘时滚动到 SwiftUI Scrollview 的最底部【英文标题】:Scroll to very bottom of SwiftUI Scrollview when keyboard appears 【发布时间】:2021-02-22 10:21:14 【问题描述】:

在我的 SwiftUI 项目中,我有以下布局

ScrollView 
    VStack 
        Text("some text that may change while editing the stuff below")
        TextField(...)
        TextField(...)
        Button(...)
    

我想要实现的是,只要 TextField 获得焦点,ScrollView 就会滚动到最底部,即按钮可见。我尝试使用包装好的UIScrollView 和keyboardWillShow-notifications,但没有找到适用于ios 13 和14 的任何东西。

实现这一目标的最佳方法是什么?

【问题讨论】:

【参考方案1】:

你可以通过使用 ScrollViewReader 来实现,如果你不想要 onTapGesture,你可以使用keyboardWillShow-notifications

ScrollView 
    ScrollViewReader  value in
        VStack 
            Text("some text that may change while editing the stuff below").id(0)
            TextField(...)
                .id(1)
                .onTapGesture 
                    withAnimation() 
                        value.scrollTo(3, anchor: .top) //or if you want the button in the center use .center
                    
                 
            TextField(...).id(2)
            Button(...).id(3)
        
    

【讨论】:

以上是关于出现键盘时滚动到 SwiftUI Scrollview 的最底部的主要内容,如果未能解决你的问题,请参考以下文章

如何滚动滚动视图以使 TextField 在 SwiftUI 中移动到键盘上方?

出现键盘时,简单的 SwiftUI 背景图像一直在移动

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

Swift:当键盘出现时如何让视图控制器滚动到文本字段

键盘出现时如何滚动 UIScrollView?

带有文本字段的 UiTableView - 出现键盘时滚动