SwiftUI на macOS - обрабатывать одиночный и двойной щелчок одновременно - PullRequest
1 голос
/ 30 января 2020

Рассмотрим это представление в SwiftUI:

struct MyView: View {
    var body: some View {
        Rectangle()
            .fill(Color.blue)
            .frame(width: 200, height: 200)
            .onTapGesture {
                print("single clicked")
            }
    }
}

Теперь мы обрабатываем один клик. Скажем, вы хотите обрабатывать двойной щелчок тоже, но с отдельным обратным вызовом.

У вас есть 2 варианта:

  • Добавить обработчик двойного щелчка после одного щелчка - это не так работать на всех
  • Добавить обработчик двойного щелчка перед обработчиком одиночного щелчка, этот вид работает:
struct MyView: View {
    var body: some View {
        Rectangle()
            .fill(Color.blue)
            .frame(width: 200, height: 200)
            .onTapGesture(count: 2) {
                print("double clicked")
            }
            .onTapGesture {
                print("single clicked")
            }
    }
}

Обработчик двойного щелчка вызывается правильно, , но одиночный обработчик щелчка вызывается с задержкой около 250 мс.

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 30 января 2020

Здесь возможен подход (протестировано с Xcode 11.2 / macOS 10.15)

struct MyView: View {
    var body: some View {
        Rectangle()
            .fill(Color.blue)
            .frame(width: 200, height: 200)
            .gesture(TapGesture(count: 2).onEnded {
                print("double clicked")
            })
            .simultaneousGesture(TapGesture().onEnded {
                print("single clicked")
            })
    }
}
0 голосов
/ 13 февраля 2020

Это раздражает, но как вам это сделать со списками? Без каких-либо жестов или распознавания касаний вы можете нажать на элемент списка, и он выбирает. Если вы добавите один из них, список перестанет отвечать на выборки, если вы не нажмете между строками. Это NSAlmostTableView.

Я должен напустить здесь, так что просто проигнорируйте: Может быть, я должен прочитать документы. Ой. Подождите - нет описания. Никакой документации и никаких задокументированных обновлений, которые я видел давно. Раньше они гордились документацией, теперь, кажется, им просто наплевать. Wi sh Я мог бы отправить им счет за мое время за все, что было сделано за последние 5–10 лет, и я должен выяснить это методом проб и ошибок или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...