使用方法: 需要右滑返回的activity继承baseActivity就可以, 如: public class SettingActivity extends BaseActivity {} 为防止滑动出现黑屏效果,记得需要定义 <!-- 滑动activity必须使用该主题,防侧滑时黑屏 --> <style name="NoTitleBarTheme" parent="AppBaseThemeSwipe"></style> &l…
1.边缘触发的系统方法 ①系统返回按钮 self.navigationController.interactivePopGestureRecognizer.enabled = YES;  ②自定义返回按钮  1. self.navigationController.interactivePopGestureRecognizer.enabled = YES;             2. self.navigationController.interactivePopGestureRecogniz…
@interface ViewController () <uigesturerecognizerdelegate> @end@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 自定义返回按钮 UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; [button setTitle:@"王俨2&qu…
-(void)viewWillAppear:(BOOL)animated{     [super viewWillAppear:animated];     //开启ios右滑返回     if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {         self.navigationController.interactivePopGestureRec…
上一篇记录了利用系统私有变量和方法实现右滑返回手势功能:http://www.cnblogs.com/ALongWay/p/5893515.html 这篇继续记录另一种方案:利用UINavigationController的delegate方法. 核心代理方法有如下两个: - (nullable id <UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController *)navigat…
iOS7以后,导航控制器,自带了从屏幕左边缘右滑返回的手势功能. 但是,如果自定义了导航栏返回按钮,这项功能就失效了,需要自行实现.又如果需要修改手势触发范围,还是需要自行实现. 广泛应用的一种实现方案是,采用私有变量和Api,完成手势交互和返回功能,自定义手势触发条件和额外功能. 另一种实现方案是,采用UINavigationController的代理方法实现交互和动画: - (nullable id <UIViewControllerInteractiveTransitioning>)na…
前言 今天有个小需求,在点击导航条上的返回按钮之前要调用某个API,并弹出UIAlertView来显示,根据用户的选项判断是否是返回还是继续留在当前控制器.举个简单的例子,当点击导航条上的左上角返回按钮时,就调用我们的API来提示是否知道,点击知道则返回,点击不知道则继续留在当前控制器. 那么问题来了,导航自带的右滑返回手势在点击系统的返回按钮时,不会没有办法处理,那是自动的,因此就要想办法改成leftBarButtonItem了,但是使用了leftBarButtonItem就没有了右滑返回手势…
前言 Android快速开发框架-ZBLibrary 最近将以前的 全局右滑返回 手势功能改成了 底部左右滑动手势. 为什么呢?为了解决滑动返回手势的问题. 目前有3种滑动返回手势 一.侧滑返回 代表app: 微信(带跟手动画) 问题: 屏幕尺寸超过一定大小(按正常手掌大小和手指长度算,最大可掌握尺寸为4.7寸)会导致用户右手持机时手指够不到左侧滑动手势触发区域. 即便勉强够到,失败率也很高,失败几次后用户就不想再用了. 二.全局右滑返回 代表app: 酷狗音乐(带跟手动画).QQ(无跟手动画)…
1.首先在navagationController的某个控制器中 遵守:UIGestureRecognizerDelegate 2.在viewDidload中设置: self.navigationController.interactivePopGestureRecognizer.delegate = self; 3.实现代理方法: - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { //…
我相信针对每一个iOS开发者来说~除了根视图控制器外~所有的界面通过导航栏push过去的界面都是可以通过右滑来返回上一个界面~其实~在很多应用和APP中~用户已经习惯了这个功能~然而~作为开发者的我们~也并没有为此做些什么~因为我们在创建项目时~苹果公司已经为我们都做好了~那么~我们这期就来聊一聊这系统自带的右滑方法以及如何修改和拦截这个不被重视的方法~ 什么时候会被拦截 当我们使用代码或者用storyboard来创建一个新的控制器的时候~我们很少注意导航栏的leftItem~因为正常情况下~p…
关于导航栏右滑返回的工具库 FDFullscreenPopGesture 是 OC 版本,用了 runtime 等各种骚操作 关于 swift ,我在 UINavigationController 的 viewDidLoad 方法中 class GMNavigationController: UINavigationController { override func viewDidLoad() { super.viewDidLoad() self.addPanGes() } /// 将导航栏的…
如果直接设置 self.navigationBarHidden = YES; 那同时也会屏蔽右滑返回功能. 解决办法1: self.navigationBarHidden = NO; self.navigationBar.hidden = YES; 解决办法2: self.navigationBarHidden = NO; self.interactivePopGestureRecognizer.delegate = self;…
#import <objc/runtime.h> @interface UINavigationController (Transition)<UIGestureRecognizerDelegate> - (void)transitionPanGestureDidLoad; @end @interface DLNavigationTransition () @end @implementation DLNavigationTransition /** *  启动右滑pop */ +…
禁止右滑: if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } 允许右滑: if ([self.navigationController respondsToSelector:@selector(interac…
基本思想 我们的滑动逻辑主要是利用View的scrollBy() 方法, scrollTo()方法和Scroller类来实现的 当手指拖动视图的时候,我们监听手指在屏幕上滑动的距离 利用View的scrollBy() 方法使得View随着手指的滑动而滑动 而当手指离开屏幕,我们在根据逻辑使用Scroller类startScroll()方法设置滑动的参数,然后再根据View的scrollTo进行滚动. 对于View的滑动,存在一些Touch事件消费的处理等问题,最主要的就是Activity里面有一…
当在一个viewController中添加了scrollView或者tableView的时候,贴边侧滑返回的时候会首先触发滚动而失效,要解决这个问题,需要通过requireGestureRecognizerToFail()方法来解决,代码如下: NSArray *gestureArray = self.navigationController.view.gestureRecognizers; // 当是侧滑手势的时候设置scrollview需要此手势失效即可 for (UIGestureReco…
在viewDidLoad方法里面添加下面这一句代码即可 self.navigationController.interactivePopGestureRecognizer.delegate=(id)self;…
import 'package:flutter/material.dart'; import 'package:flutter_app/pages/SplashScreen.dart'; import 'right_back_demo.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return M…
SwipeBackLayout是一个很好的类库,它可以让Android实现类似iOS系统的右滑返回效果,但是很多用户在使用官方提供的Demo会发现,可能出现黑屏或者返回只是看到桌面背景而没有看到上一个Activity的UI. https://github.com/Issacw0ng/SwipeBackLayout 解决方法如下: 不要在首页打开滑动返回功能,而且在首页使用AppBaseThemeMain所示的主题,在需要滑动返回的Activity使用AppBaseTheme主题,这两个主题所设置…
SwipeBackLayout 1.AS添加依赖 compile 'me.imid.swipebacklayout.lib:library:1.0.0' eclipse 想办法下载库工程,以库工程形式导入. 2.基类Activity继承SwipeBackActivity  BaseActivity extends SwipeBackActivity 3.不需要右滑的Activity在onCreate中添加以下语句即可: getSwipeBackLayout().setEnableGesture(…
项目中经常会遇到类似需求,需要在某控制器增加全屏右滑返回功能. 在我们不隐藏 NavigationBar 的前提下,系统会自动替我增加此功能,只是它作用的范围仅仅在屏幕左边有限区域. 我们需要在整个界面添加右滑返回的功能 思路: 利用Runtime 捕获到 系统的全屏Pop手势中所利用的方法,添加到我们需要的View中. 实现思路 我们知道系统的全屏Pop手势为 interactivePopGestureRecognizer 注意此属性仅仅在继承自 UINavigationController…
前几天看了@栾小布的一篇文章:Custom backBarButtonItem,在跟着做的时候我又顺便扩展了一些,写此文章的目的是为了总结一下自己所写的东西,方便以后翻看容易,同时也是自己入行iOS一年时间,希望写点东西练练手,还有希望可以分享给大家,希望大家一同讨论,提出宝贵意见以及更简单的实现.总体效果如下: 同时受@J_雨的轻松学习之——IOS利用Runtime自定义控制器POP手势动画一文影响,所以我们将用两种方法实现. 实现思路 每一个navigationController都自带有一…
SwipeBackLayout向右滑动关闭当前Activity,SlidingMenu向右滑动则是打开menu部分.在同一个Activity中,当SlidingMenu处于打开状态时,此时向右滑动,事件会被SwipeBackLayout优先处理,导致屏幕上一大部分是menu,一小部分是Activity内容的时候居然是直接关闭当前Activity,显然,这不是用户所愿意看到的(正确操作场景为:当SlidingMenu处于打开状态,右滑先是相应SlidingMenu,慢慢关闭,然后再右滑时才是响应S…
做项目的时候,会碰到用viewpager + fragments去实现多页滑动.有些时候需要完成:界面在滑动到一半或是一半以上的时候,需要把title之类的切换到下一个页面.这个时候仅仅依赖Viewpager的接口是不能判断,这里提供一个方法:判断viewpager是左滑还是右滑,同时对滑过一半的时候(这个参数可以调),进行相关操作. //定义两个变量,这个两个变量是表示滑动时候,positionOffset 是从大到 //小的变化,还是从小到大的变化.用于在滑动时候,避免多次调用一个方法 pr…
如何使用UITableViewRowAction实现右滑选择呢? 1.在iOS8以前,我们实现tableview中滑动显示删除,置顶,更多等等的按钮时,都需要自己去实现,在iOS8中系统已经写好了,只要一个代理方法和一个类就行了 2.iOS8的协议对了一个方法,返回值是数组的tableview:editActionForRowAtIndexPath:方法,我们可以在方法内部写好几个按钮,然后放到数组中返回,那些按钮的类就是UITableviewRowAction 3.在UITableviewRo…
如何使用UITableViewRowAction实现右滑选择呢? 1.在iOS8以前,我们实现tableview中滑动显示删除,置顶,更多等等的按钮时,都需要自己去实现,在iOS8中系统已经写好了,只要一个代理方法和一个类就行了 2.iOS8的协议对了一个方法,返回值是数组的tableview:editActionForRowAtIndexPath:方法,我们可以在方法内部写好几个按钮,然后放到数组中返回,那些按钮的类就是UITableviewRowAction 3.在UITableviewRo…
苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationController.interactivePopGestureRecognizer.enabled = YES; 这个api功能就是在NavigationController堆栈内的UIViewController可以支持右滑手势,也就是不用点击右上角的返回按钮,轻轻在屏幕左边一滑,屏幕就会返回,随着ios设备屏幕的增大,这个小功能让手指短,拇指大和手残人士看到了福音. 这…
场景: 近期做的TODO APP需要在主页添加一个功能,就是可以左滑删除,右滑完成.看了一下当前其他人做的例如仿探探式的效果,核心功能基本一样,但是和我预想的还是有少量区别,于是干脆自己重头学一遍如何自定义layout并且实现我所期望的功能.顺便写个傻瓜式教程,总结一下前人的经验. 需要: Android Studio, RecyclerView 方法: 1. ItemTouchHelper 首先来看一下这个类的官方定义: This is a utility class to add swipe…
当我们在ViewController中有scrollView的时候, 可能会遇到右滑无法响应返回手势, 有以下解决办法: 自定义scrollView, 实现该scrollView的以下方法即可: @implementation GOfflineContentScrollView -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureReco…
简单粗暴,一看就能明白 关于右滑cell,能滑出来两个以上的选项栏,可以如下这么做,但是要注意下面的注意事项,就是关于iOS8前后的问题,注释写的很清楚了.可以直接复制到自己的代码里看的会更明白. //允许cell可以进行编辑 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ return YES; } //cell的编辑类型 - (UITableViewCellE…