我正在使用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重复。我只想要一支安打。
为什么不使用
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()
}
}
}
在你的情况下,你可能会保留两个变量,以防有人改变主意,转而不喜欢。此外,当操作从喜欢更改为不喜欢时,您可能需要重新启动标志,反之亦然。