BBALeftSwipePushGestureRecognizer.h
4.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//
// BBALeftSwipeGestureRecognizerProtocol.h
// BBAUIKit
//
// Created by Jack on 2021/1/25.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@protocol BBALeftSwipePushGestureRecognizerProtocol;
@protocol BBALeftSwipePushGestureRecognizerFromVCProtocol;
@interface BBALeftSwipePushGestureRecognizer : NSObject
/// 左滑Push手势
@property (nonatomic, strong, readonly) UIPanGestureRecognizer *panGesture;
/// 是否已经处于手势过程中
@property (nonatomic, assign, readonly) BOOL interacting;
/// 左滑Push手势代理
@property (nonatomic, weak) id<BBALeftSwipePushGestureRecognizerProtocol> delegate;
/// 系统转场交互对象
@property (nonatomic, strong, readonly) UIPercentDrivenInteractiveTransition *interactiveTransition;
/// 初始化方法
- (instancetype)initWithFromViewController:(UIViewController<BBALeftSwipePushGestureRecognizerFromVCProtocol> *)fromVC;
@end
#pragma mark - FromViewController必须实现的协议
@protocol BBALeftSwipePushGestureRecognizerFromVCProtocol <NSObject>
@required
/// 返回FromVC持有的BBALeftSwipePushGestureRecognizer实例
- (BBALeftSwipePushGestureRecognizer *)leftSwipePushGestureRecognizer;
@end
#pragma mark - 针对ViewController的控制协议
@protocol BBALeftSwipePushGestureRecognizerProtocol <NSObject>
@optional
/***********************************************************************/
/******************* 以下两个方法二选一,必须实现一个 **********************/
/***********************************************************************/
/**
* @brief 在这个方法内执行Push操作(优先级高于pushGestureToViewController:方法,⚠️两者必须实现其一)
*
* @note 实现该方法后,不再使用pushGestureToViewController:获取的toVC进行Push操作
* @param gestureRecognizer 当前左滑手势管理类
*/
- (void)pushGestureDoPushViewControllerAction:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer;
/**
* @brief 获取转场目标VC(优先级低于pushGestureDoPushViewControllerAction:方法,⚠️两者必须实现其一)
*
* @note 如果不实现pushGestureDoPushViewControllerAction:方法,则必须实现该方法用于自动Push操作
* @param gestureRecognizer 当前左滑手势管理类
*/
- (UIViewController *)pushGestureToViewController:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer;
/***********************************************************************/
/******************* 以上两个方法二选一,必须实现一个 **********************/
/***********************************************************************/
/// 是否响应(支持)左滑Push手势
- (BOOL)pushGesture:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer shouldBegin:(UIPanGestureRecognizer *)panGesture;
/// 左滑Push手势是否支持同时响应
- (BOOL)pushGesture:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneously:(UIGestureRecognizer *)otherGestureRecognizer;
/// 接收到touch事件时是否响应左滑push手势
- (BOOL)pushGesture:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
/// 左滑Push手势冲突处理(是否取消otherGesture)
- (BOOL)pushGesture:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
/// 即将开始左滑push手势动画
- (void)pushGestureWillBeginAnimation:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer;
/// 已经开始左滑push手势动画
- (void)pushGestureDidBeginAnimation:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer;
/// 即将更新左滑push手势动画进度
- (void)pushGesture:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer willUpdateAnimationProgress:(CGFloat)percentage;
/// 已经更新左滑push手势动画进度
- (void)pushGesture:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer didUpdateAnimationProgress:(CGFloat)percentage;
/// 即将取消左滑push手势动画
- (void)pushGestureWillCancelAnimation:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer;
/// 已经取消左滑push手势动画
- (void)pushGestureDidCancelAnimation:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer;
/// 即将完成左滑push手势动画
- (void)pushGestureWillFinishAnimation:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer;
/// 已经完成左滑push手势动画
- (void)pushGestureDidFinishAnimation:(BBALeftSwipePushGestureRecognizer *)gestureRecognizer;
@end
NS_ASSUME_NONNULL_END