При редактировании текста в TextField, который находится в списке SwiftUI, возникает ошибка позиционирования курсора? Есть идеи как этого избежать? Смотрите видео и код прилагается.
Примечание. Не уверен, имеет ли это значение, однако gcTask является NSManagedObject (то есть экземпляром класса основных данных).
ОБНОВЛЕНИЕ: теперь подтверждено, что эта проблема напрямую связана со случаем, когда строковая переменная TextField связана с строковым атрибутом экземпляра класса Core Data. В этом случае данные ядра NSManagedClass GCTask имеют строковый атрибут «заголовок». Вот почему эта проблема возникает при использовании моих основных данных, и не возникает, если я просто использовал локальную строковую переменную @State?
Справочная информация: Желание иметь простой список дел с возможностью щелкать строку и редактировать ее, что вы видите в некоторых приложениях. Просто хочу понять, как это сделать в SwiftUI.
Код:
struct GCTaskRow : View {
@ObservedObject var gcTask: GCTask
@State var beingEdited : Bool = false
var body: some View {
HStack {
Image(systemName: gcTask.completed ? "checkmark.square" : "square")
.onTapGesture {
self.gcTask.completed.toggle()
GCCoreData.save()
}
VStack {
TextField(
"Enter:",
text: $gcTask.title,
onEditingChanged: { changed in
print("\(self.gcTask.title) => onEditingChanged = \(changed)")
self.beingEdited = changed
},
onCommit: {
print("\(self.gcTask.title) => onCommit")
// GCCoreData.save() // normally save here
}
)
}
}
}
}
Анимированный GIF - Что происходит, когда я нажимаю в TextField и набираю 1,2,3,4,5: