iOS7 NavigationController 右滑手势问题

苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationController.interactivePopGestureRecognizer.enabled = YES;

这个api功能就是在NavigationController堆栈内的UIViewController可以支持右滑手势,也就是不用点击右上角的返回 按钮,轻轻在屏幕左边一滑,屏幕就会返回,随着ios设备屏幕的增大,这个小功能让手指短,拇指大和手残人士看到了福音。

这个功能是好,但是经常我们会有需求定制返回按钮,如果手动定制了返回按钮,这个功能将会失效,也就是自定义了navigationItem的leftBarButtonItem,那么这个手势就会失效。解决方法找到两种

1.重新设置手势的delegate

self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;

2.当然你也可以自己响应这个手势的事件

[self.navigationController.interactivePopGestureRecognizer addTarget:self action:@selector(handleGesture:)];

有更多方法以后继续补充,这里可以根据自己需要进行选择,如果只是简单定制了返回按钮,第一种最简单,一句代码搞定。

时间: 2024-08-02 14:17:51

iOS7 NavigationController 右滑手势问题的相关文章

关于使用navigationController,前后2个视图控制器navigationBar隐藏属性不同,导致右滑手势失效问题的解决办法

###1.问题描述:如A是navigationController的rootViewController,在这个页面navigationBar是显示的(隐藏属性为NO),它push圧栈过来B视图控制器,B页面navigationBar是不显示的(隐藏属性为YES),有一定几率会出现,B要右滑pop自己要圧栈A时,右滑手势会失效,即使B中设置 self.navigationController.interactivePopGestureRecognizer.enabled = YES也不起作用##

iOS笔记【单元格右滑手势】 2017-09-09

// 响应单元格右滑手势 override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let actionShare = UITableViewRowAction(style: .normal, title: "分享") { (_,IndexPath) in // 定义滑动菜单样式和标题 let ac

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

iOS7以后,导航控制器,自带了从屏幕左边缘右滑返回的手势功能. 但是,如果自定义了导航栏返回按钮,这项功能就失效了,需要自行实现.又如果需要修改手势触发范围,还是需要自行实现. 广泛应用的一种实现方案是,采用私有变量和Api,完成手势交互和返回功能,自定义手势触发条件和额外功能. 另一种实现方案是,采用UINavigationController的代理方法实现交互和动画: - (nullable id <UIViewControllerInteractiveTransitioning>)na

右滑退出手势及隐藏导航栏存在的风险

右滑手势 基本原理: interactivePopGestureRecognizer.enabled在正常情况下控制手势是否可用,默认是可用状态 如果重写了返回按钮, 需要设置interactivePopGestureRecognizer.delegate才能重新启动手势功能 调用时机: 改变手势设置和恢复手势设置应该在viewDidAppear: 和viewWillDisappear: 里成对调用 其他: viewWillAppear:等函数里应该调用super的对应函数. 现有问题 当在vi

截获导航控制器系统返回按钮的点击pop及右滑pop事件

前几天看了@栾小布的一篇文章:Custom backBarButtonItem,在跟着做的时候我又顺便扩展了一些,写此文章的目的是为了总结一下自己所写的东西,方便以后翻看容易,同时也是自己入行iOS一年时间,希望写点东西练练手,还有希望可以分享给大家,希望大家一同讨论,提出宝贵意见以及更简单的实现.总体效果如下: 同时受@J_雨的轻松学习之——IOS利用Runtime自定义控制器POP手势动画一文影响,所以我们将用两种方法实现. 实现思路 每一个navigationController都自带有一

android开发步步为营之72:右滑关闭Activity

通过右滑手势关闭当前Activity,这个是很常见的需求,网上参考过几篇文章发现实现都比较复杂,他们大多自己另外写了个Layout,然后这个Layout当做页面的布局,经测试其实有更简单一点的方法,写个BaseActivity,其他Activity继承即可.这里给出代码,大家测试看看.有问题回馈一下,谢谢! package com.figo.study.activity; import android.app.Activity; import android.os.Bundle; import

android 检測右滑的WebView

今天产品出新花样非得要右滑....检測到右滑手势后事件不做处理放在Activity中做对应的处理即可了. import android.app.Activity; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import

android 检测右滑的WebView

今天产品出新花样非得要右滑....检测到右滑手势后事件不做处理放在Activity中做相应的处理就行了. import android.app.Activity; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import

swift 关于FDFullscreenPopGesture的右滑返回

关于导航栏右滑返回的工具库 FDFullscreenPopGesture 是 OC 版本,用了 runtime 等各种骚操作 关于 swift ,我在 UINavigationController 的 viewDidLoad 方法中 class GMNavigationController: UINavigationController { override func viewDidLoad() { super.viewDidLoad() self.addPanGes() } /// 将导航栏的