Swift,滑动手势识别器方向不起作用,似乎无法获取方向

Swift, swipe gesture recognizer direction doesn’t work, can’t seem to get the direction

编辑:现在滑动手势似乎一次只能朝一个方向移动。如果有人知道同时处理多个方向的另一种方法,我仍然会很感激信息!

Eidt:我在这个 [answer] () 中找到了一种简洁地处理多个方向的方法,它使用带有 forEach 循环的数组文字。比storyboard单独添加手势和拖动动作方便多了。

我正在尝试让 swift 滑动手势正常工作,一切正常,直到我尝试检测滑动的方向。下面是我的代码。我不明白为什么这不起作用,希望得到帮助!

在视图控制器的 viewDidLoad 中,我设置并添加了滑动手势识别器,方向为 [.left, .right]。之后我实现了需要检测滑动方向的处理程序方法。这个视图控制器中没有其他东西。 在它失败后(滑动时没有反应),我添加了一些打印,并在标题中得到了输出。

override func viewDidLoad() {
    super.viewDidLoad()
    let swipeGestureRecognizer = UISwipeGestureRecognizer(target:self, action:#selector(swipeHandler(recognizer: )))
    swipeGestureRecognizer.direction = [.left, .right]
    view.addGestureRecognizer(swipeGestureRecognizer)
}

@objc func swipeHandler (recognizer: UISwipeGestureRecognizer){
    switch recognizer.state{
    case .ended:
        let direction = recognizer.direction
        print(direction)
        if direction == .left {print(”left”)}
        else if direction == .right {print(“right”)}
        else {print(print(“none”)}
    defaul: break
}

无论我向左或向右滑动,它总是打印“none”。方向打印总是给出“UISwipeGestureRecognizerDirection(rawValue: 3)”

direction 属性 告诉手势何时触发。例如,如果 direction == .right 那么滑动只会在向右滑动时触发。 (它没有告诉你检测到的方向)

您需要一次检测一个方向。我还建议添加一种方法来控制每个滑动方向。例如。

func setUpGestures() {
    // Gesture that define a left swipe.
    let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(Scene.swipeLeft))
    swipeLeft.direction = .left
    view?.addGestureRecognizer(swipeLeft)
    // Do the same for the rest of the directions.
}

@objc func swipeLeft() {
    // Do something when the user swipe left.
}

希望对您有所帮助!