Проблема с производительностью многих текстовых полей ⇐ IOS
-
Гость
Проблема с производительностью многих текстовых полей
Мне нужно иметь много текстовых полей для чего-то вроде формы. Всегда есть что-то вроде ключевого текстового поля и текстового поля значения рядом с другим. Итак, я хочу использовать LazyVGrid с двумя столбцами. В настоящее время каждое текстовое поле использует пользовательскую привязку, это текстовое поле:
struct FocusField: View { Индекс @State var: Int @Binding var focus: Строка? @Binding переменное содержимое: [Строка] @FocusState var isFocused: строка? var nextFocus: () -> Void @ObservedObject var player = Player.shared var body: some View { если индекс индекс { вернуть содержимое[индекс] } возвращаться "" }, установите: {newValue в если content.endIndex > индекс { контент[индекс] = новоезначение } } ) // , // ось: .вертикальная ) #if os(iOS) .autocapitalization(UITextAutocapitalizationType.none) #endif .multilineTextAlignment(.leading) .onSubmit { self.nextFocus() } .onChange(of: focus, выполнить: { newValue в self.isFocused = новое значение }) .focused(self.$isFocused, равно: "\(content[index])\(index)") if isFocused == "\(content[index])\(index)"{ если индекс % 2 != 0{ Кнопка (роль: .destructive) { если content.count > 2 { content.remove(по адресу: индекс) content.remove(по адресу: индекс) } еще { содержимое = ["",""] } } этикетка: { Изображение (имя системы: «trash.fill») } } } } } } } Вот как я их использую. Внутри LazyVGrid с двумя столбцами:
struct EditViewInDetailView: View{ @Binding var item: Предмет? @ObservedObject var viewModel = VocabDetailViewModel.shared @State var focus: Строка? = ноль @Binding var isExpanded : PresentationDetent пусть столбцы: [GridItem] = Array(повторение: .init(.flexible()), count: 2) var body: некоторый View{ ScrollViewReader {прокрутить ПрокруткаView{ LazyVGrid (столбцы: столбцы) { ForEach(0..
Мне нужно иметь много текстовых полей для чего-то вроде формы. Всегда есть что-то вроде ключевого текстового поля и текстового поля значения рядом с другим. Итак, я хочу использовать LazyVGrid с двумя столбцами. В настоящее время каждое текстовое поле использует пользовательскую привязку, это текстовое поле:
struct FocusField: View { Индекс @State var: Int @Binding var focus: Строка? @Binding переменное содержимое: [Строка] @FocusState var isFocused: строка? var nextFocus: () -> Void @ObservedObject var player = Player.shared var body: some View { если индекс индекс { вернуть содержимое[индекс] } возвращаться "" }, установите: {newValue в если content.endIndex > индекс { контент[индекс] = новоезначение } } ) // , // ось: .вертикальная ) #if os(iOS) .autocapitalization(UITextAutocapitalizationType.none) #endif .multilineTextAlignment(.leading) .onSubmit { self.nextFocus() } .onChange(of: focus, выполнить: { newValue в self.isFocused = новое значение }) .focused(self.$isFocused, равно: "\(content[index])\(index)") if isFocused == "\(content[index])\(index)"{ если индекс % 2 != 0{ Кнопка (роль: .destructive) { если content.count > 2 { content.remove(по адресу: индекс) content.remove(по адресу: индекс) } еще { содержимое = ["",""] } } этикетка: { Изображение (имя системы: «trash.fill») } } } } } } } Вот как я их использую. Внутри LazyVGrid с двумя столбцами:
struct EditViewInDetailView: View{ @Binding var item: Предмет? @ObservedObject var viewModel = VocabDetailViewModel.shared @State var focus: Строка? = ноль @Binding var isExpanded : PresentationDetent пусть столбцы: [GridItem] = Array(повторение: .init(.flexible()), count: 2) var body: некоторый View{ ScrollViewReader {прокрутить ПрокруткаView{ LazyVGrid (столбцы: столбцы) { ForEach(0..
Мобильная версия