Xcode beta 5中存在相同的问题。示例代码来说明下面列出的问题 :
struct ContentView: View {
@State var someText = "Change me!"
@State var someNumber = 123.0
var body: some View {
Form {
// The entire View is re-rendered after each character is typed
TextField("Text", text: $someText,
onEditingChanged: { edit in
print("onEditingChanged executed!")
},
onCommit: {
print("onCommit executed!")
}
)
// When you enter a Double value, the View is not re-rendered until you hit Return
TextField("Number", value: $someNumber, formatter: NumberFormatter())
Spacer()
Text("text: \(self.someText), number: \(self.someNumber)")
}
}
}
答案 0 :(得分:0)
SwiftUI View
会在每次@ObservedObjects
更改时或@State
更改时重新创建。
您正在将View
的{{1}}与@State
进行双向绑定。每次输入值更改时,TextField
都会更新此双向绑定的值。这将更新TextField
中的@State
,因此将重新创建View
。
我认为您无需避免重新创建View
以获得所需的效果。重新创建View
是SwiftUI的基础。
您可以添加其他View
属性,也许是@State
,您可以将其更新为presentedText
内部的someText
的值。
例如(仅更改为“文本”):
onEditingChanged