TextField输入异常:字符无法连续输入的技术问题求助
问题原因与修复方案
问题根源
你的ListVM中错误地使用了@State修饰textInput变量。@State是专门用于SwiftUI View结构体内部的状态修饰符,不能在ObservableObject类中使用。这种错误会导致状态管理混乱,进而出现输入第一个字符正常、后续输入异常的问题。
修复步骤
将ListVM里的@State替换为@Published——这是ObservableObject类中用于让SwiftUI监听属性变化的正确修饰符:
class ListVM: ObservableObject { @Published var textInput = "" // 把@State改成@Published }
原理说明
@Published会自动为属性添加发布订阅能力,当textInput的值变化时,会通知所有绑定它的View(比如你的TextField)更新。- 你的
FormView中用@StateObject持有ListVM实例是正确的,它能保证ViewModel在View生命周期内的稳定性。
修复后,TextField的输入就能正常同步到listVM.textInput中,不会再出现字符被删除、输入无响应的问题。
内容的提问来源于stack exchange,提问作者tryingtocode
相关产品推荐
相关产品推荐

