onTapGesture и onLongPressGesture не реагируют - PullRequest
1 голос
/ 07 марта 2020

У меня есть кнопка SwiftUI, в которой я сначала нажимал на кнопку внутри области действия, но теперь я хочу изменить кнопку, чтобы я также мог долго ее нажимать. Для этого мне нужно создать onTapGesture и onLongPressGesture. После тестирования моего приложения на часах, я понял, что кнопка менее реагирует на onTapGesture и onLongpressGesture. Я отчетливо вижу, как нажимается кнопка, но она только иногда обрабатывает действие 1 и действие 2. Есть ли у кого-то похожий опыт, какой обходной путь?

 Button(action: {
                  // action 1
                }) {
                  Image(systemName: "checkmark")

                    .onTapGesture (count:1){
                      // action 1
                  }

              .onLongPressGesture {
                // action 2
              }
            }

1 Ответ

0 голосов
/ 07 марта 2020

не используйте кнопку.

Image(systemName: "checkmark")
.onTapGesture {
    // action 1
}
.onLongPressGesture {
    // action 2
}

Или добавьте одновременный жест к кнопке

Button(action: {
    print("tap")
}) {
    Image(systemName: "trash")
}.simultaneousGesture(LongPressGesture(minimumDuration: 1, maximumDistance: 10).onEnded({ (b) in
    print("long")
}))

предупреждение, «дополнительное» нажатие будет следовать за каждым длинным событием ...

Вы можете играть с маской жеста, скажем,

Button(action: {
    print("tap")
}) {
    Image(systemName: "trash")
}.simultaneousGesture(LongPressGesture().onChanged({ (b) in
    print("long change", b)
})
    .onEnded({ (b) in
    print("long end")
}), including: .gesture)

отпечатки

long change true // on tap

или

// on long press
long change true
long end

, но без «касания»!

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