我需要使用滑动来识别向下然后向右滑动的手势.但在swift上,手势识别器已经预先确定了正确的方向..我不知道如何把它用于其他方向..

推荐答案

每个方向都需要一个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相关问答推荐

如何在SwiftUI中扩展 colored颜色 超出顶部边缘

SwiftUI图表-默认情况下,X轴数据点的间距不相等

ios PWA从外部链接返回后降低了innerheight

为什么EKEventStore().questFullAccessToEvents()可以与模拟器一起使用,而不能与真实设备一起使用?

由于已存在同名项目,因此无法将Mapbox.xcframework-ios.sign复制到Signature中

JSON响应中的键有时为Int,有时为字符串

BezierPath 中绘制图像形状轮廓的算法(Canny 边缘检测器)

创建 Flutter 项目时,如何从我的系统中删除特定的开发者身份?

更改订单时如何保存商品的位置?

Flutter iOS 构建失败:DVTCoreDeviceEnabledState_Disabled

应用程序被杀死时如何在 flutter ios 应用程序中播放音频?

在 SwiftUI 中打开 PDF

如何使用 Swift 文档注释

SwiftUI 视图 - viewDidLoad()?

无法将NSTaggedPointerString类型的值转换为NSNumber

在 Grand Central Dispatch 中使用 dispatch_sync

在 Xcode 4 中将静态库链接到 iOS 项目

SLComposeViewController 分享教程

如何从 UIPickerView 获取选定的值

IOS - 从 UITextView 中删除所有填充