CXSwipeGestureRecognizer 1.1.0

CXSwipeGestureRecognizer 1.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2019年5月

Daniel Clelland 维护。



  • 作者
  • Daniel Clelland

CXSwipeGestureRecognizer

一个继承自 UIGestureRecognizer 的类,可以大大减少管理方向滑动所需要的工作。

CXSwipeGestureRecognizer *gestureRecognizer = [[CXSwipeGestureRecognizer alloc] init];
gestureRecognizer.delegate = self;
[self.view addGestureRecognizer:gestureRecognizer];

✓ 跟踪当前方向和操作开始时的方向。

if (gestureRecognizer.initialDirection == CXSwipeGestureDirectionUpwards) {
    if (gestureRecognizer.currentDirection == CXSwipeGestureDirectionDownwards) {
        NSLog(@"Gesture recognizer started swiping upwards and then changed direction");
    }
}

✓ 为 startupdatecancelfinish 提供代理协议方法。

- (void)swipeGestureRecognizerDidStart:(CXSwipeGestureRecognizer *)gestureRecognizer
{
    NSLog("Gesture recognizer started");
}

- (void)swipeGestureRecognizerDidUpdate:(CXSwipeGestureRecognizer *)gestureRecognizer
{
    NSLog("Gesture recognizer updated");
}

- (void)swipeGestureRecognizerDidCancel:(CXSwipeGestureRecognizer *)gestureRecognizer
{
    NSLog("Gesture recognizer cancelled");
}

- (void)swipeGestureRecognizerDidFinish:(CXSwipeGestureRecognizer *)gestureRecognizer
{
    NSLog("Gesture recognizer finished");
}

✓ 提供便利方法用于 locationtranslationvelocityprogress(请注意,这些方法通过调用 locationInView: 等,在 self.view.superview 上工作,以防您使用手势识别器直接转换下面的视图)。

NSLog(@"location: %f", gestureRecognizer.location);
NSLog(@"translation: %f", gestureRecognizer.translation);
NSLog(@"velocity: %f", gestureRecognizer.velocity);
NSLog(@"progress: %f", gestureRecognizer.progress);

✓ 提供取消的代理方法。

/* Cancels the gesture if it has moved less than 64 points, or if it is moving at less than 256 points per second */
- (BOOL)swipeGestureRecognizerShouldCancel:(CXSwipeGestureRecognizer *)gestureRecognizer
{
    return gestureRecognizer.translation < 64.0 && gestureRecognizer.velocity < 256.0;
}

✓ 提供弹跳(返回 YES 将使 progress 值减半,当模拟 UIScrollView 风格的弹跳效果时非常有用)的代理方法。

/* Bounces the gesture if it has moved backwards past its point of origin */
- (BOOL)swipeGestureRecognizerShouldBounce:(CXSwipeGestureRecognizer *)gestureRecognizer
{
    return gestureRecognizer.translation < 0.0;
}

完整 API

CXSwipeGestureRecognizerDelegate

- (void)swipeGestureRecognizerDidStart:(CXSwipeGestureRecognizer *)gestureRecognizer;
- (void)swipeGestureRecognizerDidUpdate:(CXSwipeGestureRecognizer *)gestureRecognizer;
- (void)swipeGestureRecognizerDidCancel:(CXSwipeGestureRecognizer *)gestureRecognizer;
- (void)swipeGestureRecognizerDidFinish:(CXSwipeGestureRecognizer *)gestureRecognizer;

- (BOOL)swipeGestureRecognizerShouldCancel:(CXSwipeGestureRecognizer *)gestureRecognizer;
- (BOOL)swipeGestureRecognizerShouldBounce:(CXSwipeGestureRecognizer *)gestureRecognizer;

CXSwipeGestureRecognizer : UIPanGestureRecognizer

@property (unsafe_unretained) id <CXSwipeGestureRecognizerDelegate> delegate;

- (CXSwipeGestureDirection)initialDirection;
- (CXSwipeGestureDirection)currentDirection;

- (CGFloat)location;
- (CGFloat)locationInDirection:(CXSwipeGestureDirection)direction;
- (CGFloat)locationInDirection:(CXSwipeGestureDirection)direction inView:(UIView *)view;

- (CGFloat)translation;
- (CGFloat)translationInDirection:(CXSwipeGestureDirection)direction;
- (CGFloat)translationInDirection:(CXSwipeGestureDirection)direction inView:(UIView *)view;

- (CGFloat)velocity;
- (CGFloat)velocityInDirection:(CXSwipeGestureDirection)direction;
- (CGFloat)velocityInDirection:(CXSwipeGestureDirection)direction inView:(UIView *)view;

- (CGFloat)progress;
- (CGFloat)progressInDirection:(CXSwipeGestureDirection)direction;
- (CGFloat)progressInDirection:(CXSwipeGestureDirection)direction inView:(UIView *)view;