关于导航栏右滑返回的工具库 FDFullscreenPopGesture 是 OC 版本,用了 runtime 等各种骚操作

关于 swift ,我在 UINavigationController 的 viewDidLoad 方法中

class GMNavigationController: UINavigationController {

    override func viewDidLoad() {
super.viewDidLoad() self.addPanGes()
}
/// 将导航栏的右滑手势添加到 view 上面
func addPanGes() { interactivePopGestureRecognizer?.delegate = self
guard let targets = interactivePopGestureRecognizer?.value(forKey: "_targets") as?[AnyObject] else {
return
}
let dict = targets[]
//拿到action
let target = dict.value(forKey: "target") as Any
//通过字典无法拿到action,这里通过Selector方法包装action
let action = Selector(("handleNavigationTransition:"))
//拿到target action 创建pan手势并添加到全屏view上
let gesture = UIPanGestureRecognizer(target: target, action: action)
view.addGestureRecognizer(gesture)
     // 这里需要将导航栏的右滑手势去掉
self.interactivePopGestureRecognizer?.isEnabled = false
}
}

这样就可以达到的效果了。

swift 关于FDFullscreenPopGesture的右滑返回的更多相关文章

  1. iOS页面右滑返回的实现方法总结

    1.边缘触发的系统方法 ①系统返回按钮 self.navigationController.interactivePopGestureRecognizer.enabled = YES;  ②自定义返回 ...

  2. App开发流程之右滑返回手势功能续

    上一篇记录了利用系统私有变量和方法实现右滑返回手势功能:http://www.cnblogs.com/ALongWay/p/5893515.html 这篇继续记录另一种方案:利用UINavigatio ...

  3. App开发流程之右滑返回手势功能

    iOS7以后,导航控制器,自带了从屏幕左边缘右滑返回的手势功能. 但是,如果自定义了导航栏返回按钮,这项功能就失效了,需要自行实现.又如果需要修改手势触发范围,还是需要自行实现. 广泛应用的一种实现方 ...

  4. 想要隐藏navigationBar,同时又想支持右滑返回功能

    如果直接设置 self.navigationBarHidden = YES; 那同时也会屏蔽右滑返回功能. 解决办法1: self.navigationBarHidden = NO; self.nav ...

  5. SwipeBackLayout的使用方法,右滑返回

    使用方法: 需要右滑返回的activity继承baseActivity就可以, 如: public class SettingActivity extends BaseActivity {} 为防止滑 ...

  6. iOS系统右滑返回全局控制方案

    前言 今天有个小需求,在点击导航条上的返回按钮之前要调用某个API,并弹出UIAlertView来显示,根据用户的选项判断是否是返回还是继续留在当前控制器.举个简单的例子,当点击导航条上的左上角返回按 ...

  7. 全新的手势,侧滑返回、全局右滑返回都OUT啦!

    前言 Android快速开发框架-ZBLibrary 最近将以前的 全局右滑返回 手势功能改成了 底部左右滑动手势. 为什么呢?为了解决滑动返回手势的问题. 目前有3种滑动返回手势 一.侧滑返回 代表 ...

  8. 第二十六篇、因为自定item(nav)而使系统右滑返回手势失效的解决方法

    @interface ViewController () <uigesturerecognizerdelegate> @end@implementation ViewController ...

  9. navagationController 的子控制器如何取消右滑返回

    1.首先在navagationController的某个控制器中 遵守:UIGestureRecognizerDelegate 2.在viewDidload中设置: self.navigationCo ...

随机推荐

  1. leetCode104. 二叉树的最大深度

    给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7], ...

  2. IIS 字符串过长

    jquery.datatable.js---弹窗要用极速模式 <?xml version="1.0" encoding="utf-8"?><c ...

  3. python标签值标准化到[0-(#class-1)]

    python 处理标签常常需要将一组标签映射到一组数字,数字还要求连续. 比如 ['a', 'b', 'c', 'a', 'a', 'b', 'c'] ==(a->0, b->1, c-& ...

  4. Why the Anaconda command prompt is the first choice in windows?

    为什么在windows里,首选的conda命令行工具是Anaconda command prompt? In windows, what's the difference between comman ...

  5. zk hdfs hadoop yarn hive 学习笔记

    如图

  6. LeetCode 142. Linked List Cycle II 判断环入口的位置 C++/Java

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ...

  7. Hive实现交叉二维分析的小语句

    1. 梳理出你要的列和行维度 列维度: 每一周 行维度: 年级 + 学科 + 班型 2. 对数据按周增序进行聚合 (即根据列维度) ,生成list concat_ws 和 collect_list ( ...

  8. 使用 nodeJs 开发微信公众号(配置服务器)

    流程如下: 1. 申请微信公众号:企业号.服务号.订阅号(前两个要钱) 2. 配置微信公众号后台 选择基本配置,获得 AppId 和 AppSecret ,点击服务器配置 URL:你服务器地址,不能是 ...

  9. delphi frame 添加 create onshow 事件

    delphi frame  添加 create onshow 事件 https://www.cnblogs.com/Gufan/archive/2011/09/06/2538932.html proc ...

  10. 数据库sql使用小结

    1.更新数据库中表的字段的时候,如果更新的表本身含有最细粒度的字段,那么可以以最细粒度作为判断条件,一次性更新多个字段: 2.如果更新的表中本身不含有最细粒度字段,那么要更新多个字段时有两种思路: a ...