当我更新isDisabled视图中的状态变量时,它会.disabled按预期更新文本字段的修饰符,但随后会导致控制台中出现大约 40 个以下错误实例(末尾具有不同的属性编号):
=== AttributeGraph: cycle detected through attribute 200472 ===
然后它说:AttributeGraphError[59460:4808136] [SwiftUI] Modifying state during view update, this will cause undefined behavior.
这是产生错误的代码的最小版本:
struct ContentView: View {
@State var isDisabled = false
@State var text = ""
var body: some View {
VStack {
TextField("", text: $text)
.textFieldStyle(.roundedBorder)
.disabled(isDisabled)
Button("Disable text field") { isDisabled = true }
}
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何修复这个错误?
是否可以滚动到TextEditor当前光标位置?
我有 aList作为TextEditor最后一行。我滚动到最后一行,List以确保 位于TextEditor键盘上方。
问题是,由于我将滚动锚设置为.bottom,因此在编辑长文本时,当滚动视图滚动到行的底部时,顶部的文本不可见。
您应该能够使用以下代码重新创建问题。只需输入一些长文本,然后尝试在顶部编辑该文本。
import SwiftUI
struct ContentView: View {
@State var items: [String] = ["Apples", "Oranges", "Bananas", "Pears", "Mangos", "Grapefruit","Apples", "Oranges", "Bananas", "Pears", "Mangos", "Grapefruit"]
@State private var newItemText : String = ""
var body: some View {
ScrollViewReader { (proxy: ScrollViewProxy) in
List{
ForEach(items, id: \.self) {
Text("\($0)")
}
TextEditor(text: $newItemText)
.onChange(of: newItemText) { newValue in
proxy.scrollTo("New Item TextField", anchor: .bottom)
}.id("New Item TextField") …Run Code Online (Sandbox Code Playgroud) 在 SwiftUI 上,TextField您可以使用修饰符为键盘的返回/提交按钮设置操作.onSubmit()。你如何实现同样的目标TextEditor?(.onSubmit()似乎不起作用。)
在 SwiftUI 中,我试图让我的TextEditor内容与上面的内容保持一致Text。我有一个在 UIKit 中执行此操作的模式,但似乎无法在 SwiftUI 中找到正确的修饰符。
在所附的屏幕截图中,我希望文本原点为 (0,0)。粗略地说,不... (6, 12)。
实施代码:
struct AttributedTraitField: View {
let name: String
@State private var value: String = "Placeholder"
var body: some View {
VStack(alignment: .leading, spacing: 0.0) {
Text(name)
.background(Color.blue)
TextEditor(text: $value)
}
.padding(.all)
.background(Color.green)
}
}
Run Code Online (Sandbox Code Playgroud) 如何在 SwiftUI 中做到这一点TextEditor?我想到从键盘读取返回。TextField有onEditingChanged和onCommit,但 TextEditor 没有。
在Notes应用程序中,它会自动检测编号列表,并具有用于添加项目符号列表的按钮。
我特别希望它在空行后添加数字/项目符号。(如果可能的话)