我有一个文本字段,允许用户输入他们的号码。昨天我升级到IOS 17.0之前一直运行良好。 升级到IOS 17.0后,当用户想输入另一个号码时,用户输入的号码无法清除。更具体地,最后一个数字不能被删除。例如,用户原来输入了50,他/她想删除它以输入另一个数字。但5不能删除,只能删除0。因此用户无法在文本字段中输入新数字。是IOS17.0的bug吗?我该如何解决它。我关于文本字段的代码如下:
TextField("Focus Time", value: $userViewModel.focusTime, format: .number)
.frame(width: 220, height: nil)
.keyboardType(.numberPad)
.textFieldStyle(.roundedBorder)
.font(Font.system(size: 25, design: .default))
.multilineTextAlignment(TextAlignment.center)
.focused($textIsFocused1)
.onTapGesture {
textIsFocused1.toggle()
}
经过多次尝试,我发现该bug与EnvironmentObject var有关。如果我将 userViewModel.focusTime(这是一个 EnvironmentObject 变量)更改为 focusTime(这是一个 State 变量),则视图可以正常工作。没有任何问题。 iOS 17发布后,似乎不再支持一些基于CoreData的功能。所以是时候尽快切换到 SwiftData 了。