Android NavigationController 右滑手势详解

 更新时间:2015年08月18日 15:21:58   投稿:mrr  
目前苹果手机在人机交互中尽力做到极致,在ios7中,新增了一个小小功能,用户不用点击右上角的返回按钮,在屏幕左边一滑,就会返回。下面给大家详解Android 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:)];

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

问题二:ios开发 向右滑动手势实现返回.在NavigationController中如何设置

在navigationController中实现向右滑动 返回功能

系统提供的backbarbuttonitem,不用添加任何代码即可实现向右滑动后退功能,但是往往要对按钮修改样式等时,就需要自定义leftbarbuttonitem,此时向右滑动即失效.通过下面方法即可解决该问题.(本人亲自实验过)

主要是通过设置navigationController.interactivePopGestureRecognizer 此手势的一些属性,此手势大家可以通过sdk查看说明,这里不细说

1. self.navigationController.interactivePopGestureRecognizer.enabled = YES | NO;      手势有效与否

2. self.navigationController.interactivePopGestureRecognizer.delegate = self;               手势的代理,一般会设置为self

1中的属性,再viewcontroller中默认的设置为YES,即手势有效.按照2中的属性设置后,当前的viewcontroller即可以实现该向右滑动后退功能,但是当回到navigationController的rootView中再次做出向右滑动时,程序会有问题(再次push子controller时,程序卡在当前界面无法跳转).有效解决方案如下:

说明:有两个controllerA,B

navigationController的rootview设置为A,在A中点击按钮后push B.在A的 -(void)viewDidAppear:(BOOL)animated方法中加入self.navigationController.interactivePopGestureRecognizer.enabled = NO;代码如下:
- (void)viewDidAppear:(BOOL)animated
{
  if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;  //让rootView禁止滑动
  }
}

然后再B中的- (void)viewDidLoad方法中加入

- (void)viewDidLoad
{
  // 配置返回按钮
  UIBarButtonItem * backItem = [self barButtonForImageNames:@[@"icon-返回", @"", @""] action:@selector(popBack)];
  backItem.title = @"";
  if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
    self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    self.navigationController.interactivePopGestureRecognizer.delegate = self;
  }
  self.navigationItem.leftBarButtonItem = backItem;

  if ([[[UIDevice currentDevice] systemVersion] floatValue]
 >= 7.0) {

    self.navigationController.interactivePopGestureRecognizer.delegate = self; 
  }
}

这样即可以保证再A中向右滑动后再次pushB时不会卡在A界面.

再项目中大家一般会创建风格统一的界面,一般都会创建一个基础viewcontroller,再此viewcontroller扩展一个配置leftbarbutton的方法,在该方法中加入B的viewDidLoad中的代码,这样在创建leftbarbutton的同时,直接加了返回的操作(不用每个viewController中都加入这样一段代码).然后只在navigationController的rootView中加入A的(void)viewDidAppear:(BOOL)animated方法即可.

以上内容是Android NavigationController 右滑手势详解,希望大家喜欢。

相关文章

  • iOS开发中使用UIDynamic来捕捉动画组件的重力行为

    iOS开发中使用UIDynamic来捕捉动画组件的重力行为

    这篇文章主要介绍了iOS开发中使用UIDynamic来捕捉动画组件的重力行为的方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-12-12
  • 高仿IOS的Android弹出框

    高仿IOS的Android弹出框

    这篇文章主要为大家详细介绍了高仿IOS的Android弹出框的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • iOS中nil、Nil、NULL、NSNull详解

    iOS中nil、Nil、NULL、NSNull详解

    这篇文章主要介绍了iOS中nil、Nil、NULL、NSNull详解的相关资料,需要的朋友可以参考下
    2015-06-06
  • iOS tabview如何添加字母索引

    iOS tabview如何添加字母索引

    这篇文章主要为大家详细介绍了iOS tabview如何添加字母索引,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • iOS如何改变UIBarButtonItem的大小详解

    iOS如何改变UIBarButtonItem的大小详解

    这篇文章主要给大家介绍了关于iOS如何改变UIBarButtonItem大小的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • Drawer Builder组件实现flutter侧边抽屉效果示例分析

    Drawer Builder组件实现flutter侧边抽屉效果示例分析

    这篇文章主要为大家介绍了Drawer Builder组件实现flutter侧边抽屉效果示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • iOS自定义日期、时间、城市选择器实例代码

    iOS自定义日期、时间、城市选择器实例代码

    这篇文章主要介绍了iOS自定义日期、时间、城市选择器实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • iOS开发实现图片浏览功能

    iOS开发实现图片浏览功能

    这篇文章主要为大家详细介绍了iOS开发实现图片浏览功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • iOS实现微信/QQ显示最近拍摄图片的功能实例代码

    iOS实现微信/QQ显示最近拍摄图片的功能实例代码

    如果你刚刚拍摄了图片,在使用微信/QQ发生消息时会显示“你可能要发送的图片”,这个功能非常人性化,怎么实现的呢?下面小编给大家分享iOS实现微信/QQ显示最近拍摄图片的功能实例代码,一起看看吧
    2017-03-03
  • iOS中UIScrollerView的用法及基于AotoLayout的控件悬停

    iOS中UIScrollerView的用法及基于AotoLayout的控件悬停

    这篇文章主要介绍了iOS中UIScrollerView的用法及基于AotoLayout的控件悬停,文中对于UIScrollerView的方法及属性介绍地非常详细,十分推荐,示例代码为Objective-C,需要的朋友可以参考下
    2016-03-03

最新评论