Как нажать «Нравится» и «Не нравится» при перетаскивании карточек влево и вправо с помощью KolodaView Swift
Я использую kolodaview для быстрого просмотра карты. Все работает нормально, но я застрял в одном месте. Когда пользователь перемещает карточку влево или вправо, API говорит о том, что нравится или не нравится. Для этого левого и правого колода задан метод делегата:
func koloda(_ koloda: KolodaView, draggedCardWithPercentage finishPercentage: CGFloat, in direction: SwipeResultDirection){
if direction == .left {
if finishPercentage == 100.0 {
apifordislike()
}
} else if direction == .right{
apiforlike()
}
}
Его работа, но проблема в том, что при замене finishPercentage == 100.0 и нажатии API, но пользователь медленно перемещает API карты, ударяя более одного, 100.0 повторяется. Я хочу только один удар.
1 ответ
Почему бы не использовать
func koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) {
вместо?
В противном случае сохраните информацию о статусе - например,
...
var alreadyLiked: Bool = false
var alreadyDisliked: Bool = false
...
func koloda(_ koloda: KolodaView, draggedCardWithPercentage finishPercentage: CGFloat, in direction: SwipeResultDirection){
if direction == .left {
if finishPercentage == 100.0 {
if !alreadyDisliked {
alreadyDisliked = true
apifordislike()
}
}
} else if direction == .right{
if !alreadyLiked {
alreadyLiked = true
apiforlike()
}
}
}
в вашем случае вы можете оставить две переменные на тот случай, если кто-то передумает изменить на «не нравится». Кроме того, вы можете захотеть перезапустить флаги, когда действие изменится с понравившегося на не понравившееся и наоборот.