DirectedPanGestureRecognizer 1.2.1

DirectedPanGestureRecognizer 1.2.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2018年10月
SPM支持 SPM

Daniel Clelland 维护。



  • 作者:
  • Daniel Clelland

DirectedPanGestureRecognizer

DirectedPanGestureRecognizer 是一个 UIPanGestureRecognizer 子类,提供更丰富的 API 用于在 Swift 3 中处理拖拽手势。

它基于我的老旧的 CXSwipeGestureRecognizer 库。它并不会完全废弃那个项目 —— 虽然大部分只是用 Swift 重新编写的,但一些有争议的功能已被删除。

安装

pod 'DirectedPanGestureRecognizer', '~> 1.0'

使用方法

let gestureRecognizer = DirectedPanGestureRecognizer()
gestureRecognizer.delegate = self
view.addGestureRecognizer(gestureRecognizer)

特点

✓ 跟踪手势的初始状态

if (gestureRecognizer.initialDirection == .up) {
    if (gestureRecognizer.direction == .down) {
        print("Gesture recognizer started swiping upwards and then changed direction")
    }
}

✓ 强制手势的起始方向

func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
    switch gestureRecognizer {
    case let panGestureRecognizer as DirectedPanGestureRecognizer where panGestureRecognizer == self.panGestureRecognizer:
        return panGestureRecognizer.direction == .left
    default:
        return true
    }
}

✓ 委派startupdatecancelfinish事件的协议方法

func directedPanGestureRecognizer(didStart gestureRecognizer: DirectedPanGestureRecognizer) {
    print("Gesture recognizer started")
}

func directedPanGestureRecognizer(didUpdate gestureRecognizer: DirectedPanGestureRecognizer) {
    print("Gesture recognizer updated")
}

func directedPanGestureRecognizer(didCancel gestureRecognizer: DirectedPanGestureRecognizer) {
    print("Gesture recognizer cancelled")
}

func directedPanGestureRecognizer(didFinish gestureRecognizer: DirectedPanGestureRecognizer) {
    print("Gesture recognizer finished")
}

✓ 便捷方法,包括locationdirectiontranslationvelocity

let location = gestureRecognizer.location // CGPoint?
let direction = gestureRecognizer.direction // DirectedPanGestureRecognizer.Direction?
let translation = gestureRecognizer.translation(inDirection: .right) // CGFloat
let velocity = gestureRecognizer.velocity(inDirection: .right) // CGFloat

IBDesignable参数用于强制设定最小翻译和速度

gestureRecognizer.minimumTranslation = 64.0
gestureRecognizer.minimumVelocity = 256.0