在swift中平移滑动手势期间获取y坐标的最简单方法

时间:2016-07-29 20:07:54

标签: ios swift

我在x and y start coordinates期间设法获得了swipe

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    if let touch = touches.first {
        let position :CGPoint = touch.locationInView(view)
        startX = Int(position.x)
        startY = Int(position.y)        
    }
}

我也需要在滑动过程中使用y坐标。我已经设法用 UIPanGestureRecognizer 以非常迂回的方式做到这一点。

必须有一些方法可以在获得起始坐标的几行内完成。

任何人都可以帮我指出正确的方向吗?

致以最诚挚的问候,Niklas

2 个答案:

答案 0 :(得分:4)

您可以使用UIPanGestureRecognizer。它将为您提供滑动的x和y坐标。 Apple专门针对这种情况创建了这个 - 它比touchesMoved更容易实现并且自己跟踪所有内容。

设置手势识别器:

let gestureRecognizer = UIPanGestureRecognizer(target: self, action: "handlePan:")
self.someDraggableView.addGestureRecognizer(gestureRecognizer)

要获得翻译(在上面设置的回调中):

func handlePan(gestureRecognizer: UIPanGestureRecognizer) {
    if gestureRecognizer.state == .Began {
        // When the drag is first recognized, you can get the starting coordinates here
    }

    if gestureRecognizer.state == .Changed {
        let translation = gestureRecognizer.translationInView(self.view)  
        // Translation has both .x and .y values
    }
}

在回调的.Changed部分,每次用户在给定视图中移动手指时,都会调用您的代码。您可以从translation.y

获取y坐标

您可以看到更多示例here

答案 1 :(得分:0)

看起来你正在寻找方法'touchesMoved'。我在手机上做这个答案,所以不能正确的格式