OC三方框架03:FDFullscreenPopGesture探索

张建 lol

前言

  1. 什么是侧滑?

侧滑本身是系统自带的,但是是左边缘触发的侧滑;

  1. 是什么 导致自带 的实现 不起作用 的?原因有:

(1)隐藏了系统右上角返回的按钮,系统会自动关掉左滑返回的功能;
(2)禁用侧滑功能
(3)自定义返回键或者导航栏后,侧滑失灵;

  1. 怎么解决?
  • 使用 FDFullscreenPopGesture 可以解决

一个支持 全屏侧 滑的 UINavigationController 的类目。

  • FDFullscreenPopGesture 的这个类目:UINavigation+FDFullscreenPopGesture,扩展了iOS7+的侧滑返回功能。取代从左边缘滑起的是,我们可以从屏幕的任意位置滑动,并且伴随着返回上个界面的过渡动画也可以正常流畅。

主要功能

  1. 自动支持全屏侧滑
  2. 禁用导航/控制器的侧滑功能

源码解读

  1. UINavigationController 的分类 UINavigationController + FDFullscreenPopGesture中,暴露给用户的属性有:
1
2
3
4
5
6
7
8
9
@interface UINavigationController (FDFullscreenPopGesture)

// 这个滑动手势,处理用户的侧滑弹出操作
@property (nonatomic, strong, readonly) UIPanGestureRecognizer *fd_fullscreenPopGestureRecognizer;

// 判断fd_viewControllerBasedNavigationBarAppearanceEnabled属性,视图控制器可以自己控制,而不是全局的方式控制,导航栏的外观。,默认是YES。
@property (nonatomic, assign) BOOL fd_viewControllerBasedNavigationBarAppearanceEnabled;

@end
  1. UIViewController 的分类 UIViewController + FDFullscreenPopGesture 中,允许视图控制器禁用用户弹出手势,比如某些情况下,视图控制器需要自己处理滑动手势。其中,暴露给用户的属性有
1
2
3
4
5
6
// 当处于导航控制栈中时,是否禁用用户弹出手势;
@property (nonatomic, assign) BOOL fd_interactivePopDisabled;

// 通过检查基于导航栏的视图控制器是否可用,来指明视图控制器的导航栏隐藏与否。默认是NO,一般导航栏是展示的。
@property (nonatomic, assign) BOOL fd_prefersNavigationBarHidden;

基本使用

具体集成过程就不再讲解,如果有不知道的,看我 iOS-OC三方库01:SDCycleScrollView基本使用 集成过程,下面来看看具体使用:

  1. 把这个框架的 .h 文件添加到 全局的宏 中,所有的 导航控制器 都将 自动会支持全屏侧滑
1
2
// FDFullscreenPopGesture(全屏侧滑)
#import <UINavigationController+FDFullscreenPopGesture.h>
  1. 禁用手势
  • 禁用导航控制器的侧滑功能:
1
self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO;
  • 禁用当前viewcontroller的侧滑功能:
1
self = YES;

使用过程遇到的问题

  1. 键盘弹出时,此时手势侧滑,会出现 导航控制器 分离

解决办法:在视图已经出现时 弹出键盘,在视图将要消失时 收起键盘

1
2
3
4
5
6
7
8
9
10
11
12
#pragma mark - 防止键盘影响手势侧滑pop
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"视图将要消失");
[self.codeV.bottomTF resignFirstResponder];
}
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"视图已经出现");
// 弹出键盘
[self.codeV.bottomTF becomeFirstResponder];
}
  • Post title:OC三方框架03:FDFullscreenPopGesture探索
  • Post author:张建
  • Create time:2020-09-28 14:18:18
  • Post link:https://redefine.ohevan.com/2020/09/28/OC三方框架/OC三方框架03:FDFullscreenPopGesture探索/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
OC三方框架03:FDFullscreenPopGesture探索