我正在为我的应用程序开发一项功能,该功能将允许用户口述将出现在 textField 中的文本。为此,我创建了一个滚动视图,其中只有一个文本字段,其内容会在用户口授时自动更新。但是我遇到了关于滚动视图的自动滚动的问题。因为 textFields 的高度随着新文本的出现而增长,它与滚动视图的高度一样高,这意味着此时 textFields 的高度将继续增长,但用户不会看到任何新文本。
我如何以编程方式确保如果文本字段的高度超出滚动视图,滚动视图将向下滚动以显示新文本?
我已经尝试使用 ScrollViewReader、ScrollViewProxy 和 .onChange 闭包,但它似乎没有任何影响。
ScrollViewReader{proxy in
ScrollView(.vertical, showsIndicators: false) {
Text(newMessageText)
.frame(width: 230, alignment: .center)
.font(.system(size: 46))
.foregroundColor(.black)
.multilineTextAlignment(.leading)
.lineLimit(nil)
.padding()
.id(textViewId)
}
.onChange(of: newMessageText) { newValue in
proxy.scrollTo(textViewId, anchor: .bottom)
}
}