如何使用滑动手势识别器进行长时间的按压?

时间:2015-06-11 03:48:32

标签: ios swift uigesturerecognizer

我正在使用滑动手势识别器通过向上滑动和向下滑动来增加和减少我的计数器。

当我向上滑动时,我也将我的标签偏移+10,而当我向下滑动时,我的标签偏移了-10。

一切都很好但是一旦我向上滑动,我的标签偏移就会回到0。 我的目标是只要我向上滑动就将偏移量保持在+10。 这是我的代码:

DT[, .SD[(which(!is.na(value))[1]):.N], by = group]
##    group       date value
## 1:     a 2015-01-02     2
## 2:     a 2015-01-03     3
## 3:     a 2015-01-04    NA
## 4:     a 2015-01-05     2
## 5:     b 2015-01-03     2
## 6:     b 2015-01-04    NA
## 7:     b 2015-01-05     2

问题:

  • 只要我正在向上滑动,是否有一个解决方案可以使标签保持+10的偏移量,只要我向下滑动,就会有-10的偏移量?

1 个答案:

答案 0 :(得分:1)

正如我从您的问题中了解到的那样,当您向上滑动时,您希望存储+10值,并且您可以在全局范围内将incrementoffset全局声明为类,如下所示:

class ViewController: UIViewController {

    //Declare it below your class declaration 
    var increment = 0
    var offset: CGFloat = 0

}

在你的代码中,你将这两个变量声明为handleSwipes函数,这样当你调用这个函数时它将变为0,你的偏移量总是变为+10或-10但是一旦你将它全局声明为类一旦它到达它就会保持它的值。如果你想在每次handleSwipes函数调用时增加它,那么你可以这样做:

offset +=  10
offset -= 10

同样的事情会发生在您的increment变量上,您可以根据需要更改它,之后您可以通过这种方式将标签位置更改为handleSwipes函数:

yourLbl.center = CGPoint(x: yourLbl.center.x, y: yourLbl.center.y + offset)

您的handleSwipes功能将是:

func handleSwipes(sender:UISwipeGestureRecognizer) {


    // up or down
    if sender.direction == .Up {
        increment = 1
        offset +=  10
        println(offset)
        yourLbl.center = CGPoint(x: yourLbl.center.x, y: yourLbl.center.y + offset)
    } else {
        increment = -1
        offset -= 10
        println(offset)
        yourLbl.center = CGPoint(x: yourLbl.center.x, y: yourLbl.center.y + offset)
    }
}

希望这会有所帮助。