ios - 如何识别所有 4 个方向的滑动

标签 ios swift swipe direction uiswipegesturerecognizer

我需要使用滑动来识别先向下再向右滑动的手势。但是在 swift UISwipeGestureRecognizer 上有预先确定的正确方向..我不知道如何让它用于其他方向..

最佳答案

每个方向都需要一个 UISwipeGestureRecognizer。这有点奇怪,因为 UISwipeGestureRecognizer.direction 属性是一个选项样式的位掩码,但每个识别器只能处理一个方向。如果需要,您可以将它们全部发送给同一个处理程序,然后在那里进行排序,或者将它们发送给不同的处理程序。这是一种实现方式:

override func viewDidLoad() {
    super.viewDidLoad()

    let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(respondToSwipeGesture))
    swipeRight.direction = .right
    self.view.addGestureRecognizer(swipeRight)

    let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(respondToSwipeGesture))
    swipeDown.direction = .down
    self.view.addGestureRecognizer(swipeDown)
}

@objc func respondToSwipeGesture(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {

        switch swipeGesture.direction {
        case .right:
            print("Swiped right")
        case .down:
            print("Swiped down")
        case .left:
            print("Swiped left")
        case .up:
            print("Swiped up")
        default:
            break
        }
    }
}

swift 3:

override func viewDidLoad() {
    super.viewDidLoad()

    let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))
    swipeRight.direction = UISwipeGestureRecognizerDirection.right
    self.view.addGestureRecognizer(swipeRight)

    let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))
    swipeDown.direction = UISwipeGestureRecognizerDirection.down
    self.view.addGestureRecognizer(swipeDown)
}

func respondToSwipeGesture(gesture: UIGestureRecognizer) {
    if let swipeGesture = gesture as? UISwipeGestureRecognizer {
        switch swipeGesture.direction {
        case UISwipeGestureRecognizerDirection.right:
            print("Swiped right")
        case UISwipeGestureRecognizerDirection.down:
            print("Swiped down")
        case UISwipeGestureRecognizerDirection.left:
            print("Swiped left")
        case UISwipeGestureRecognizerDirection.up:
            print("Swiped up")
        default:
            break
        }
    }
}

关于ios - 如何识别所有 4 个方向的滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215117/

相关文章:

ios - 如何在iOS中求解方程式

ios - 登录和完成处理程序

xcode - 如何在 Swift 中将 mp4 直接下载到我的硬盘?

swift - 如何执行与时间相关的功能?

ios - 在两个 View 之间水平滑动

iOS:在 subview 内滑动手势

ios - 从 ScrollView 返回 NSArray 中的位置

ios - Xcode 5.0删除项目的方法

swift - 预填充 .sqlite 的核心数据 (Swift3)

android - 在android中滑动 ListView