swiftui - SwiftUI TextEditor:在文本更改时滚动到顶部
问题描述
我正在使用 SwiftUI 2 的新 TextEditor。我想做的是 TextEditor 在文本更改时自动滚动到顶部,而目前情况并非如此。
这是示例项目的代码:
import SwiftUI
struct ContentView: View {
@State private var text: String = Self.text1
static private var text1 = """
Text 1:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"""
static private var text2 = """
Text 2:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"""
var body: some View {
VStack {
TextEditor(text: $text)
.frame(maxHeight: 150)
Button("Toggle Text") {
if text == Self.text1 {
text = Self.text2
} else {
text = Self.text1
}
}
}
}
}
我发现一些关于 ScrollView 的线程没有帮助,但在 TextEditor 上找不到任何内容。
解决方案
这是使用 ScrollViewReader for SwiftUI 2.0 和 ScrollView 的可能解决方案
var body: some View {
ScrollViewReader { sp in
ScrollView {
TextEditor(text: $text)
.id(0)
}.frame(maxHeight: 150)
Button("Toggle Text") {
if text == Self.text1 {
text = Self.text2
sp.scrollTo(0, anchor: .top)
} else {
text = Self.text1
sp.scrollTo(0, anchor: .top)
}
}
}
}
推荐阅读
- python-3.x - Python - SocketIO 发出大文件的内容
- javascript - Node.js 在不使用“async”的情况下使用“await”时显示不明确的错误
- assembly - NASM:打印 4 行文本
- itext7 - iText 7 - 对齐文本和段落
- pine-script - 之字形斐波那契水平交叉
- python - 当我打开 .exe 文件时,让我的 python 制作的 windows 应用程序自动安装依赖项
- haskell - Gtk3 事件,用于在 GtkPaned 的拆分更改时通知
- r - 在R中使用不同的数据forloop自动重复模型
- python - 如何在python中将自定义文本转换为向量?
- python - 在 Python 中使用请求库上传多部分文件