Как определить Ontapgesture с Debounce в Swiftui, используя PassThroughSubject более проще, чем модификатор, модификаторIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как определить Ontapgesture с Debounce в Swiftui, используя PassThroughSubject более проще, чем модификатор, модификатор

Сообщение Anonymous »

Это мое расширение для просмотра: < /p>
extension View {
func onTapGesture(debounce: CGFloat, action: @escaping () -> Void) -> some View {
modifier(DebounceTapModifier(action: action, debounce: debounce))
}
}
< /code>
Вот мой модификатор: < /p>
struct DebounceTapModifier: ViewModifier {
private let action: () -> Void
private let debounce: CGFloat
private let model = DebounceViewModel()

init(action: @escaping () -> Void, debounce: CGFloat) {
self.action = action
self.debounce = debounce
setupActions()
}

func body(content: Content) -> some View {
content.onTapGesture {
model.subject.send(0)
}
}

// MARK: - Private

private func setupActions() {
model.subject
.debounce(for: .seconds(debounce), scheduler: DispatchQueue.main)
.sink { _ in
action()
}
.store(in: &model.cancellables)
}
}

class DebounceViewModel {
let subject = PassthroughSubject()
var cancellables = Set()
}
< /code>
Вот как это вызывается из просмотра < /p>
Text("abc")
.onTapGesture(debounce: 4) {
print("done1") // is not called at all, even after 4 seconds
}
< /code>
Есть ли более простой способ выполнить эту задачу? Это кажется очень сложным для такой простой вещи ...

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как определить Ontapgesture с Debounce в Swiftui, используя PassThroughSubject более проще, чем модификатор, модификатор
    Anonymous » » в форуме IOS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Применение Debounce в панели поиска SwiftUI
    Anonymous » » в форуме IOS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Применение Debounce в панели поиска SwiftUI
    Anonymous » » в форуме IOS
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Swiftui Combine Debounce Textfield
    Anonymous » » в форуме IOS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Элементы списка SwiftUI не регистрируются onTapGesture после обновления iOS 18?
    Anonymous » » в форуме IOS
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

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