Кнопка с двойным действием (касание и долгое нажатие) в SwiftUI - PullRequest
1 голос
/ 09 июля 2020

Можно ли в SwiftUI настроить кнопку с действием при нажатии и другим действием при длительном нажатии?

Я пробовал это:

Button(action: {
    self.handleButtonTap()
})
{
    Text("My nice button")
        .foregroundColor(.primary)
}
.onLongPressGesture {
    print("Long pressed!")
}

или вместо:

.onLongPressGesture {
    print("Long pressed!")
}

используя это:

.gesture(longPress)

где долгое нажатие выглядит примерно так:

var longPress: some Gesture {
  ....
}

Но, похоже, ничего не работает. В лучшем случае мне удалось прикрепить жест долгого нажатия к тексту кнопки, но даже в этом случае обычное нажатие перестает работать.

Любой хороший совет будет очень признателен.

1 Ответ

2 голосов
/ 09 июля 2020

Пожалуйста, проверьте, работает ли это для вас:

Button("Button") {
    print("tapped")
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
    print("long pressed")
})

Обратите внимание, что действие касания выполняется после каждого длительного нажатия в приведенном выше коде. Вы можете справиться с этим с помощью простого Bool.

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