0

I'm trying to do something (print "Swiped") IF the velocity of a swipe is greater than a specified criteria. Based on researching I've come up with this code. "Began" gets printed whenever I touch the screen, but "Ended" and "Swiped" only print when I first tap and hold the screen, then drag, then lift up (a rather slow process). I hope i can just flick the screen and my text gets printed, but right now it will only print if i take my time with the swipe process. Not exactly a quick swipe.. you know? Hopefully this makes sense!

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

print("Began")

    for touch in touches {
        let location:CGPoint = touch.locationInView(self.view!)
        start = location
        startTime = touch.timestamp
    }
}

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {

    print("Ended")

    for touch in touches {
        let location:CGPoint = touch.locationInView(self.view!)
        var dx:CGFloat = location.x - start!.x;
        var dy:CGFloat = location.y - start!.y;
        var magnitude:CGFloat = sqrt(dx*dx+dy*dy)
        if (magnitude >= kMinDistance) {
            print("OK")
            var dt:CGFloat = CGFloat(touch.timestamp - startTime!)
            if (dt > kMinDuration) {
                var speed:CGFloat = magnitude / dt;
                if (speed >= kMinSpeed && speed <= kMaxSpeed) {
                    print("Swiped")
                }
            }
        }
    }
}
joey
  • 49
  • 7

0 Answers0