Клавиатура (TextField) в приложении SwiftUI для iOS зависает/зависает, почему?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Клавиатура (TextField) в приложении SwiftUI для iOS зависает/зависает, почему?

Сообщение Anonymous »

Я создаю словарное приложение как личный проект. Я загружаю текстовый файл с 70 000 строками (около 2 МБ). При наборе текста на клавиатуре нажатия клавиш зависают, создавая неприятную задержку для UX (можно вводить максимум один символ в секунду). Я хотел бы знать, почему. Я отлаживал это приложение последнюю неделю. Сначала я думал, что именно операции фильтрации, когда пользователь ищет текст, все тормозят. Поэтому я создал TextField с логикой устранения дребезга, чтобы ограничить количество раз, когда будет выполняться фильтрация (например, если я набираю ключи с задержкой менее 800 миллисекунд, он не будет фильтроваться при каждом отдельном нажатии клавиши, что без необходимости экономит время на циклическом переборе всего словаря). пока пользователь не сделает паузу на 800 мс). К моему удивлению, это не помогло. Я видел, что фильтрация будет выполняться только через 800 секунд, но текстовое поле все еще отставало при вводе. Затем я помещаю всю эту логику фильтрации в очередь отправки для запуска во вторичном потоке. Это не помогло. Затем я полностью удалил операции фильтрации, а задержка клавиатуры все еще сохраняется!
С тех пор я по частям разделил свой код и свел его к этому простому проекту, который вы видите ниже. . Я подумал, что по логике при первом запуске загрузка файла в словарь Strings займет несколько секунд. Справедливо. Но даже если я запущу приложение, подожду 20 секунд (чтобы убедиться, что файл полностью загрузился в память), а затем начну печатать, клавиатура подтормаживает. Тем не менее, я могу прекрасно пролистать список из 70 000 слов. Никакого зависания там нет. Зависание происходит только в TextField, который даже не взаимодействует с массивом словарных строк и не осуществляет поиск в нем.
Может ли кто-нибудь объяснить мне, почему клавиатура тормозит и что я могу сделать, чтобы решить эту проблему? это? Заранее большое спасибо.

Код: Выделить всё

import SwiftUI
import Combine

class SearchViewModel: ObservableObject {
@Published var text: String = ""
}

struct SearchView: View {

@Environment(\.colorScheme) var colorScheme
@StateObject private var searchViewModel = SearchViewModel()

// Reading in a txt file of 70,000 lines of strings, each with a Spanish word and its English equivalent
@State var dictionaryStrings = (readFileIntoStringArray(fileName: "dictionaryFile")).sorted{$0 < $1}

var body: some View {
VStack() {
Spacer()
List(dictionaryStrings, id: \.self) { dictionaryLine in
Text(dictionaryLine)
.listStyle(.plain)
.scrollDismissesKeyboard(.interactively)

let borderColor = colorScheme == .dark ? Color.white : Color.black
TextField("Search Spanish or English", text: $searchViewModel.text)
.padding()
.overlay(RoundedRectangle(cornerRadius: 10.0).strokeBorder(borderColor, style: StrokeStyle(lineWidth: 1.5)))
.padding()
.onReceive(searchViewModel.$text.debounce(for: .milliseconds(800), scheduler: DispatchQueue.main)) {_ in
// Removed all work
}
.modifier(TextFieldClearButton(text: $searchViewModel.text))
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... s-lags-why
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Клавиатура (TextField) в приложении SwiftUI для iOS зависает/зависает, почему?
    Anonymous » » в форуме IOS
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Клавиатура мерцает и экран подпрыгивает при совместном использовании SecureField и TextField в SwiftUI
    Anonymous » » в форуме IOS
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous
  • Переместите TextField вверх, когда в SwiftUI появилась клавиатура.
    Anonymous » » в форуме IOS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Textfield Bordere Off, когда появляется клавиатура
    Anonymous » » в форуме IOS
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Составьте Textfield Clear Focus Ontap за пределами Textfield
    Anonymous » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»