-1

我正在使用 kolodaview 进行卡片 swift 之类的视图。一切正常,但我卡在一个地方。当用户向左或向右滑动卡片时,API 会点击喜欢和不喜欢。对于这个左右 koloda 给定的委托方法:

 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。我只想要一击。

4

1 回答 1

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()
    }
 }
}

在您的情况下,您可能会保留两个变量,以防有人改变主意改变为不喜欢。此外,当操作从喜欢变为不喜欢时,您可能希望重新启动标志,反之亦然。

于 2021-06-18T08:17:47.613 回答